7 use Test::More tests => 4;
9 use t::lib::TestBuilder;
13 use lib $FindBin::Bin;
14 use_ok('C4::Reserves');
17 my $schema = Koha::Database->schema;
18 $schema->storage->txn_begin;
19 my $dbh = C4::Context->dbh;
21 my $builder = t::lib::TestBuilder->new;
23 my $library = $builder->build({
27 my $bib_title = "Test Title";
29 my $borrower = $builder->build({
33 branchcode => $library->{branchcode},
37 my $itemtype1 = $builder->build({
44 my $itemtype2 = $builder->build({
52 # Test hold_fulfillment_policy
53 my $right_itemtype = $itemtype1->{itemtype};
54 my $wrong_itemtype = $itemtype2->{itemtype};
55 my $borrowernumber = $borrower->{borrowernumber};
56 my $branchcode = $library->{branchcode};
57 $dbh->do("DELETE FROM reserves");
58 $dbh->do("DELETE FROM issues");
59 $dbh->do("DELETE FROM items");
60 $dbh->do("DELETE FROM biblio");
61 $dbh->do("DELETE FROM biblioitems");
62 $dbh->do("DELETE FROM transport_cost");
63 $dbh->do("DELETE FROM tmp_holdsqueue");
64 $dbh->do("DELETE FROM hold_fill_targets");
65 $dbh->do("DELETE FROM default_branch_circ_rules");
66 $dbh->do("DELETE FROM default_branch_item_rules");
67 $dbh->do("DELETE FROM default_circ_rules");
68 $dbh->do("DELETE FROM branch_item_rules");
70 $dbh->do("INSERT INTO biblio (frameworkcode, author, title, datecreated) VALUES ('', 'Koha test', '$bib_title', '2011-02-01')");
72 my $biblionumber = $dbh->selectrow_array("SELECT biblionumber FROM biblio WHERE title = '$bib_title'")
73 or BAIL_OUT("Cannot find newly created biblio record");
75 $dbh->do("INSERT INTO biblioitems (biblionumber, marcxml, itemtype) VALUES ($biblionumber, '', '$right_itemtype')");
77 my $biblioitemnumber =
78 $dbh->selectrow_array("SELECT biblioitemnumber FROM biblioitems WHERE biblionumber = $biblionumber")
79 or BAIL_OUT("Cannot find newly created biblioitems record");
82 INSERT INTO items (biblionumber, biblioitemnumber, homebranch, holdingbranch, notforloan, damaged, itemlost, withdrawn, onloan, itype)
83 VALUES ($biblionumber, $biblioitemnumber, '$branchcode', '$branchcode', 0, 0, 0, 0, NULL, '$right_itemtype')
87 $dbh->selectrow_array("SELECT itemnumber FROM items WHERE biblionumber = $biblionumber")
88 or BAIL_OUT("Cannot find newly created item");
90 $dbh->do("DELETE FROM default_circ_rules");
91 $dbh->do("INSERT INTO default_circ_rules ( holdallowed, hold_fulfillment_policy ) VALUES ( 2, 'any' )");
94 my $reserve_id = AddReserve( $branchcode, $borrowernumber, $biblionumber, '', 1, undef, undef, undef, undef, undef, undef, $right_itemtype );
95 my ( $status ) = CheckReserves($itemnumber);
96 is( $status, 'Reserved', "Hold where itemtype matches item's itemtype targed" );
97 CancelReserve( { reserve_id => $reserve_id } );
99 # Itemtypes don't match
100 $reserve_id = AddReserve( $branchcode, $borrowernumber, $biblionumber, '', 1, undef, undef, undef, undef, undef, undef, $wrong_itemtype );
101 ( $status ) = CheckReserves($itemnumber);
102 is($status, q{}, "Hold where itemtype does not match item's itemtype not targeted" );
103 CancelReserve( { reserve_id => $reserve_id } );
106 $reserve_id = AddReserve( $branchcode, $borrowernumber, $biblionumber, '', 1, undef, undef, undef, undef, undef, undef, undef );
107 ( $status ) = CheckReserves($itemnumber);
108 is( $status, 'Reserved', "Item targeted with no hold itemtype set" );
109 CancelReserve( { reserve_id => $reserve_id } );
112 $schema->storage->txn_rollback;