|
|
@ -12,7 +12,7 @@ use C4::Context; |
|
|
|
|
|
|
|
use Data::Dumper; |
|
|
|
|
|
|
|
use Test::More tests => 17; |
|
|
|
use Test::More tests => 20; |
|
|
|
|
|
|
|
|
|
|
|
use C4::Branch; |
|
|
@ -159,6 +159,149 @@ ok( |
|
|
|
# Cleanup |
|
|
|
$dbh->rollback; |
|
|
|
|
|
|
|
### Test holds queue builder does not violate holds policy ### |
|
|
|
|
|
|
|
# Clear out existing rules relating to holdallowed |
|
|
|
$dbh->do("DELETE FROM default_branch_circ_rules"); |
|
|
|
$dbh->do("DELETE FROM default_branch_item_rules"); |
|
|
|
$dbh->do("DELETE FROM default_circ_rules"); |
|
|
|
|
|
|
|
C4::Context->set_preference('UseTransportCostMatrix', 0); |
|
|
|
|
|
|
|
my @branchcodes = keys %$branches; |
|
|
|
( $itemtype ) = @{ $dbh->selectrow_arrayref("SELECT itemtype FROM itemtypes LIMIT 1") }; |
|
|
|
|
|
|
|
my $borrowernumber1 = AddMember( |
|
|
|
( |
|
|
|
cardnumber => 'CARDNUMBER1', |
|
|
|
firstname => 'Firstname', |
|
|
|
surname => 'Surname', |
|
|
|
categorycode => 'S', |
|
|
|
branchcode => $branchcodes[0], |
|
|
|
) |
|
|
|
); |
|
|
|
my $borrowernumber2 = AddMember( |
|
|
|
( |
|
|
|
cardnumber => 'CARDNUMBER2', |
|
|
|
firstname => 'Firstname', |
|
|
|
surname => 'Surname', |
|
|
|
categorycode => 'S', |
|
|
|
branchcode => $branchcodes[1], |
|
|
|
) |
|
|
|
); |
|
|
|
my $borrowernumber3 = AddMember( |
|
|
|
( |
|
|
|
cardnumber => 'CARDNUMBER3', |
|
|
|
firstname => 'Firstname', |
|
|
|
surname => 'Surname', |
|
|
|
categorycode => 'S', |
|
|
|
branchcode => $branchcodes[2], |
|
|
|
) |
|
|
|
); |
|
|
|
my $borrower1 = GetMember( borrowernumber => $borrowernumber1 ); |
|
|
|
my $borrower2 = GetMember( borrowernumber => $borrowernumber2 ); |
|
|
|
my $borrower3 = GetMember( borrowernumber => $borrowernumber3 ); |
|
|
|
|
|
|
|
$dbh->do(qq{ |
|
|
|
INSERT INTO biblio ( |
|
|
|
frameworkcode, |
|
|
|
author, |
|
|
|
title, |
|
|
|
datecreated |
|
|
|
) VALUES ( |
|
|
|
'SER', |
|
|
|
'Koha test', |
|
|
|
'$TITLE', |
|
|
|
'2011-02-01' |
|
|
|
) |
|
|
|
}); |
|
|
|
$biblionumber = $dbh->selectrow_array("SELECT biblionumber FROM biblio WHERE title = '$TITLE'") |
|
|
|
or BAIL_OUT("Cannot find newly created biblio record"); |
|
|
|
|
|
|
|
$dbh->do(qq{ |
|
|
|
INSERT INTO biblioitems ( |
|
|
|
biblionumber, |
|
|
|
marcxml, |
|
|
|
itemtype |
|
|
|
) VALUES ( |
|
|
|
$biblionumber, |
|
|
|
'', |
|
|
|
'$itemtype' |
|
|
|
) |
|
|
|
}); |
|
|
|
$biblioitemnumber = $dbh->selectrow_array("SELECT biblioitemnumber FROM biblioitems WHERE biblionumber = $biblionumber") |
|
|
|
or BAIL_OUT("Cannot find newly created biblioitems record"); |
|
|
|
|
|
|
|
$items_insert_sth = $dbh->prepare(qq{ |
|
|
|
INSERT INTO items ( |
|
|
|
biblionumber, |
|
|
|
biblioitemnumber, |
|
|
|
barcode, |
|
|
|
homebranch, |
|
|
|
holdingbranch, |
|
|
|
notforloan, |
|
|
|
damaged, |
|
|
|
itemlost, |
|
|
|
withdrawn, |
|
|
|
onloan, |
|
|
|
itype |
|
|
|
) VALUES ( |
|
|
|
$biblionumber, |
|
|
|
$biblioitemnumber, |
|
|
|
?, |
|
|
|
?, |
|
|
|
?, |
|
|
|
0, |
|
|
|
0, |
|
|
|
0, |
|
|
|
0, |
|
|
|
NULL, |
|
|
|
'$itemtype' |
|
|
|
) |
|
|
|
}); |
|
|
|
# Create 3 items from 2 branches ( branches are for borrowers 1 and 2 respectively ) |
|
|
|
$barcode = int( rand(1000000000000) ); |
|
|
|
$items_insert_sth->execute( $barcode + 0, $branchcodes[0], $branchcodes[0] ); |
|
|
|
$items_insert_sth->execute( $barcode + 1, $branchcodes[1], $branchcodes[1] ); |
|
|
|
$items_insert_sth->execute( $barcode + 2, $branchcodes[1], $branchcodes[1] ); |
|
|
|
|
|
|
|
$dbh->do("DELETE FROM reserves"); |
|
|
|
my $sth = $dbh->prepare(q{ |
|
|
|
INSERT INTO reserves ( |
|
|
|
borrowernumber, |
|
|
|
biblionumber, |
|
|
|
branchcode, |
|
|
|
priority, |
|
|
|
reservedate |
|
|
|
) VALUES ( ?,?,?,?, CURRENT_DATE() ) |
|
|
|
}); |
|
|
|
$sth->execute( $borrower1->{borrowernumber}, $biblionumber, $branchcodes[0], 1 ); |
|
|
|
$sth->execute( $borrower2->{borrowernumber}, $biblionumber, $branchcodes[0], 2 ); |
|
|
|
$sth->execute( $borrower3->{borrowernumber}, $biblionumber, $branchcodes[0], 3 ); |
|
|
|
#warn "RESERVES" . Data::Dumper::Dumper( $dbh->selectall_arrayref("SELECT * FROM reserves", { Slice => {} }) ); |
|
|
|
#warn "ITEMS: " . Data::Dumper::Dumper( $dbh->selectall_arrayref("SELECT * FROM items WHERE biblionumber = $biblionumber", { Slice => {} }) ); |
|
|
|
|
|
|
|
my $holds_queue; |
|
|
|
|
|
|
|
$dbh->do("DELETE FROM default_circ_rules"); |
|
|
|
$dbh->do("INSERT INTO default_circ_rules ( holdallowed ) VALUES ( 1 )"); |
|
|
|
C4::HoldsQueue::CreateQueue(); |
|
|
|
$holds_queue = $dbh->selectall_arrayref("SELECT * FROM tmp_holdsqueue", { Slice => {} }); |
|
|
|
ok( @$holds_queue == 1, "Holds queue filling correct number for default holds policy 'from home library'" ); |
|
|
|
ok( $holds_queue->[0]->{cardnumber} eq 'CARDNUMBER1', "Holds queue filling correct hold for default holds policy 'from home library'"); |
|
|
|
|
|
|
|
$dbh->do("DELETE FROM default_circ_rules"); |
|
|
|
$dbh->do("INSERT INTO default_circ_rules ( holdallowed ) VALUES ( 2 )"); |
|
|
|
C4::HoldsQueue::CreateQueue(); |
|
|
|
$holds_queue = $dbh->selectall_arrayref("SELECT * FROM tmp_holdsqueue", { Slice => {} }); |
|
|
|
ok( @$holds_queue == 3, "Holds queue filling correct number for holds for default holds policy 'from any library'" ); |
|
|
|
#warn "HOLDS QUEUE: " . Data::Dumper::Dumper( $holds_queue ); |
|
|
|
|
|
|
|
# Cleanup |
|
|
|
$dbh->rollback; |
|
|
|
|
|
|
|
### END Test holds queue builder does not violate holds policy ### |
|
|
|
|
|
|
|
sub test_queue { |
|
|
|
my ($test_name, $use_cost_matrix, $pick_branch, $hold_branch) = @_; |
|
|
|
|
|
|
|