10 use Test::More tests => 4;
12 use t::lib::TestBuilder;
15 use_ok('C4::Reserves');
18 my $schema = Koha::Database->schema;
19 $schema->storage->txn_begin;
20 my $dbh = C4::Context->dbh;
22 my $builder = t::lib::TestBuilder->new;
24 my $library1 = $builder->build({
29 C4::Context->_new_userenv('xxx');
30 C4::Context->set_userenv(0,0,0,'firstname','surname', $library1->{branchcode}, 'Midway Public Library', '', '', '');
32 my $bib_title = "Test Title";
34 my $borrower1 = $builder->build({
37 branchcode => $library1->{branchcode},
38 dateexpiry => '3000-01-01',
42 my $borrower2 = $builder->build({
45 branchcode => $library1->{branchcode},
46 dateexpiry => '3000-01-01',
50 # Test hold_fulfillment_policy
51 my ( $itemtype ) = @{ $dbh->selectrow_arrayref("SELECT itemtype FROM itemtypes LIMIT 1") };
52 my $borrowernumber1 = $borrower1->{borrowernumber};
53 my $borrowernumber2 = $borrower2->{borrowernumber};
54 my $library_A = $library1->{branchcode};
56 $dbh->do("INSERT INTO biblio (frameworkcode, author, title, datecreated) VALUES ('', 'Koha test', '$bib_title', '2011-02-01')");
58 my $biblionumber = $dbh->selectrow_array("SELECT biblionumber FROM biblio WHERE title = '$bib_title'")
59 or BAIL_OUT("Cannot find newly created biblio record");
61 $dbh->do("INSERT INTO biblioitems (biblionumber, itemtype) VALUES ($biblionumber, '$itemtype')");
63 my $biblioitemnumber =
64 $dbh->selectrow_array("SELECT biblioitemnumber FROM biblioitems WHERE biblionumber = $biblionumber")
65 or BAIL_OUT("Cannot find newly created biblioitems record");
68 INSERT INTO items (barcode, biblionumber, biblioitemnumber, homebranch, holdingbranch, notforloan, damaged, itemlost, withdrawn, onloan, itype)
69 VALUES ('AllowHoldIf1', $biblionumber, $biblioitemnumber, '$library_A', '$library_A', 0, 0, 0, 0, NULL, '$itemtype')
73 $dbh->selectrow_array("SELECT itemnumber FROM items WHERE biblionumber = $biblionumber")
74 or BAIL_OUT("Cannot find newly created item");
76 my $item1 = GetItem( $itemnumber1 );
79 INSERT INTO items (barcode, biblionumber, biblioitemnumber, homebranch, holdingbranch, notforloan, damaged, itemlost, withdrawn, onloan, itype)
80 VALUES ('AllowHoldIf2', $biblionumber, $biblioitemnumber, '$library_A', '$library_A', 0, 0, 0, 0, NULL, '$itemtype')
84 $dbh->selectrow_array("SELECT itemnumber FROM items WHERE biblionumber = $biblionumber ORDER BY itemnumber DESC")
85 or BAIL_OUT("Cannot find newly created item");
87 my $item2 = GetItem( $itemnumber2 );
89 $dbh->do("DELETE FROM issuingrules");
90 my $rule = Koha::IssuingRule->new(
98 reservesallowed => 99,
104 my $is = IsAvailableForItemLevelRequest( $item1, $borrower1);
105 is( $is, 0, "Item cannot be held, 2 items available" );
107 AddIssue( $borrower2, $item1->{barcode} );
109 $is = IsAvailableForItemLevelRequest( $item1, $borrower1);
110 is( $is, 0, "Item cannot be held, 1 item available" );
112 AddIssue( $borrower2, $item2->{barcode} );
114 $is = IsAvailableForItemLevelRequest( $item1, $borrower1);
115 is( $is, 1, "Item can be held, no items available" );
118 $schema->storage->txn_rollback;