From e74b91165de888cd260afd575c20358dc9f435d7 Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Mon, 16 Sep 2013 11:31:22 -0400 Subject: [PATCH] Bug 10243: (follow-up) add unit tests Signed-off-by: Galen Charlton --- t/db_dependent/HoldsQueue.t | 145 +++++++++++++++++++++++++++++++++++- 1 file changed, 144 insertions(+), 1 deletion(-) diff --git a/t/db_dependent/HoldsQueue.t b/t/db_dependent/HoldsQueue.t index 0066bb6b3f..92bd843baa 100755 --- a/t/db_dependent/HoldsQueue.t +++ b/t/db_dependent/HoldsQueue.t @@ -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) = @_; -- 2.20.1