From 1086b392c9b1c497a46c2d6c18b6777a0fd1a1b2 Mon Sep 17 00:00:00 2001 From: Agustin Moyano Date: Tue, 30 Apr 2019 04:56:19 +0000 Subject: [PATCH] Bug 22284: (follow-up) fixes after 18936 --- ..._add_ft_local_hold_group_to_library_groups.perl | 5 - t/db_dependent/Holds.t | 279 +++++++++++++-------- t/db_dependent/Koha/Biblios.t | 246 +++++++++++++----- t/db_dependent/Koha/Items.t | 246 +++++++++++++----- t/db_dependent/Koha/Libraries.t | 4 + 5 files changed, 533 insertions(+), 247 deletions(-) diff --git a/installer/data/mysql/atomicupdate/bug_22284_add_ft_local_hold_group_to_library_groups.perl b/installer/data/mysql/atomicupdate/bug_22284_add_ft_local_hold_group_to_library_groups.perl index fba0b32faf..7fda4dd138 100644 --- a/installer/data/mysql/atomicupdate/bug_22284_add_ft_local_hold_group_to_library_groups.perl +++ b/installer/data/mysql/atomicupdate/bug_22284_add_ft_local_hold_group_to_library_groups.perl @@ -5,11 +5,6 @@ if( CheckVersion( $DBversion ) ) { $dbh->do( "ALTER TABLE library_groups ADD COLUMN ft_local_hold_group tinyint(1) NOT NULL DEFAULT 0 AFTER ft_search_groups_staff" ); } - $dbh->do("ALTER TABLE default_branch_circ_rules MODIFY hold_fulfillment_policy ENUM('any', 'holdgroup', 'homebranch', 'holdingbranch') NOT NULL DEFAULT 'any'"); - $dbh->do("ALTER TABLE default_circ_rules MODIFY hold_fulfillment_policy ENUM('any', 'holdgroup', 'homebranch', 'holdingbranch') NOT NULL DEFAULT 'any'"); - $dbh->do("ALTER TABLE default_branch_item_rules MODIFY hold_fulfillment_policy ENUM('any', 'holdgroup', 'homebranch', 'holdingbranch') NOT NULL DEFAULT 'any'"); - $dbh->do("ALTER TABLE branch_item_rules MODIFY hold_fulfillment_policy ENUM('any', 'holdgroup', 'homebranch', 'holdingbranch') NOT NULL DEFAULT 'any'"); - # Always end with this (adjust the bug info) SetVersion( $DBversion ); print "Upgrade to $DBversion done (Bug 22284 - Add ft_local_hold_group column to library_groups and alter hold_fulfillment_policy in rules tables)\n"; diff --git a/t/db_dependent/Holds.t b/t/db_dependent/Holds.t index 7a7de26561..a523c51579 100755 --- a/t/db_dependent/Holds.t +++ b/t/db_dependent/Holds.t @@ -245,17 +245,13 @@ my $foreign_biblio = $builder->build_sample_biblio({ itemtype => 'DUMMY' }); my ($foreign_item_bibnum, $foreign_item_bibitemnum, $foreign_itemnumber) = AddItem({ homebranch => $branch_2, holdingbranch => $branch_2 } , $foreign_biblio->biblionumber); # Cleanup circulation rules -$dbh->do('DELETE FROM issuingrules'); -$dbh->do('DELETE FROM branch_item_rules'); -$dbh->do('DELETE FROM default_branch_item_rules'); -$dbh->do('DELETE FROM default_branch_circ_rules'); -$dbh->do('DELETE FROM default_circ_rules'); -$dbh->do( - q{INSERT INTO issuingrules (categorycode, branchcode, itemtype, reservesallowed, holds_per_record) - VALUES (?, ?, ?, ?, ?)}, - {}, - '*', '*', '*', 25, 99 -); +$dbh->do('DELETE FROM circulation_rules'); +# $dbh->do( +# q{INSERT INTO issuingrules (categorycode, branchcode, itemtype, reservesallowed, holds_per_record) +# VALUES (?, ?, ?, ?, ?)}, +# {}, +# '*', '*', '*', 25, 99 +# ); $dbh->do( q{INSERT INTO issuingrules (categorycode, branchcode, itemtype, reservesallowed, holds_per_record) VALUES (?, ?, ?, ?, ?)}, @@ -571,10 +567,7 @@ subtest 'CanItemBeReserved / holds_per_day tests' => sub { Koha::Holds->search->delete; $dbh->do('DELETE FROM issues'); $dbh->do('DELETE FROM issuingrules'); - $dbh->do('DELETE FROM branch_item_rules'); - $dbh->do('DELETE FROM default_branch_item_rules'); - $dbh->do('DELETE FROM default_branch_circ_rules'); - $dbh->do('DELETE FROM default_circ_rules'); + $dbh->do('DELETE FROM circulation_rules'); Koha::Items->search->delete; Koha::Biblios->search->delete; @@ -715,10 +708,7 @@ subtest 'CanItemBeReserved / branch_not_in_hold_group' => sub { {}, '*', '*', '*', 25 ); - $dbh->do('DELETE FROM branch_item_rules'); - $dbh->do('DELETE FROM default_branch_circ_rules'); - $dbh->do('DELETE FROM default_branch_item_rules'); - $dbh->do('DELETE FROM default_circ_rules'); + $dbh->do('DELETE FROM circulation_rules'); Koha::Items->search->delete; Koha::Biblios->search->delete; @@ -772,11 +762,17 @@ subtest 'CanItemBeReserved / branch_not_in_hold_group' => sub { ); # Insert default circ rule of holds allowed only from local hold group for all libraries - $dbh->do( - q{INSERT INTO default_circ_rules (holdallowed, hold_fulfillment_policy, returnbranch) - VALUES (?,?,?)}, - {}, - 3, 'any', 'any' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 3, + hold_fulfillment_policy => 'any', + returnbranch => 'any' + } + } ); # Test 2: Patron 1 can place hold @@ -794,16 +790,22 @@ subtest 'CanItemBeReserved / branch_not_in_hold_group' => sub { ); # Cleanup default_cirt_rules - $dbh->do('DELETE FROM default_circ_rules'); + $dbh->do('DELETE FROM circulation_rules'); # Insert default circ rule to "any" for library 2 - $dbh->do( - q{INSERT INTO default_branch_circ_rules (branchcode, holdallowed, hold_fulfillment_policy, returnbranch) - VALUES (?,?,?,?)}, - {}, - $library2->branchcode, 2, 'any', 'any' + Koha::CirculationRules->set_rules( + { + branchcode => $library2->branchcode, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 2, + hold_fulfillment_policy => 'any', + returnbranch => 'any' + } + } ); - + # Test 4: Patron 3 can place hold is_deeply( CanItemBeReserved( $patron3->borrowernumber, $itemnumber_2 ), @@ -812,11 +814,17 @@ subtest 'CanItemBeReserved / branch_not_in_hold_group' => sub { ); # Update default circ rule to "hold group" for library 2 - $dbh->do( - q{UPDATE default_branch_circ_rules set holdallowed = ? - WHERE branchcode = ?}, - {}, - 3, $library2->branchcode + Koha::CirculationRules->set_rules( + { + branchcode => $library2->branchcode, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 3, + hold_fulfillment_policy => 'any', + returnbranch => 'any' + } + } ); # Test 5: Patron 3 cannot place hold @@ -827,14 +835,20 @@ subtest 'CanItemBeReserved / branch_not_in_hold_group' => sub { ); # Cleanup default_branch_cirt_rules - $dbh->do('DELETE FROM default_branch_circ_rules'); + $dbh->do('DELETE FROM circulation_rules'); # Insert default item rule to "any" for itemtype 2 - $dbh->do( - q{INSERT INTO default_branch_item_rules (itemtype, holdallowed, hold_fulfillment_policy, returnbranch) - VALUES (?,?,?,?)}, - {}, - $itemtype2->itemtype, 2, 'any', 'any' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => $itemtype2->itemtype, + categorycode => undef, + rules => { + holdallowed => 2, + hold_fulfillment_policy => 'any', + returnbranch => 'any' + } + } ); # Test 6: Patron 3 can place hold @@ -845,11 +859,17 @@ subtest 'CanItemBeReserved / branch_not_in_hold_group' => sub { ); # Update default item rule to "hold group" for itemtype 2 - $dbh->do( - q{UPDATE default_branch_item_rules set holdallowed = ? - WHERE itemtype = ?}, - {}, - 3, $itemtype2->itemtype + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => $itemtype2->itemtype, + categorycode => undef, + rules => { + holdallowed => 3, + hold_fulfillment_policy => 'any', + returnbranch => 'any' + } + } ); # Test 7: Patron 3 cannot place hold @@ -860,16 +880,22 @@ subtest 'CanItemBeReserved / branch_not_in_hold_group' => sub { ); # Cleanup default_branch_item_rules - $dbh->do('DELETE FROM default_branch_item_rules'); + $dbh->do('DELETE FROM circulation_rules'); # Insert branch item rule to "any" for itemtype 2 and library 2 - $dbh->do( - q{INSERT INTO branch_item_rules (branchcode, itemtype, holdallowed, hold_fulfillment_policy, returnbranch) - VALUES (?,?,?,?,?)}, - {}, - $library2->branchcode, $itemtype2->itemtype, 2, 'any', 'any' + Koha::CirculationRules->set_rules( + { + branchcode => $library2->branchcode, + itemtype => $itemtype2->itemtype, + categorycode => undef, + rules => { + holdallowed => 2, + hold_fulfillment_policy => 'any', + returnbranch => 'any' + } + } ); - + # Test 8: Patron 3 can place hold is_deeply( CanItemBeReserved( $patron3->borrowernumber, $itemnumber_2 ), @@ -878,13 +904,19 @@ subtest 'CanItemBeReserved / branch_not_in_hold_group' => sub { ); # Update branch item rule to "hold group" for itemtype 2 and library 2 - $dbh->do( - q{UPDATE branch_item_rules set holdallowed = ? - WHERE branchcode = ? and itemtype = ?}, - {}, - 3, $library2->branchcode, $itemtype2->itemtype + Koha::CirculationRules->set_rules( + { + branchcode => $library2->branchcode, + itemtype => $itemtype2->itemtype, + categorycode => undef, + rules => { + holdallowed => 3, + hold_fulfillment_policy => 'any', + returnbranch => 'any' + } + } ); - + # Test 9: Patron 3 cannot place hold is_deeply( CanItemBeReserved( $patron3->borrowernumber, $itemnumber_2 ), @@ -911,10 +943,7 @@ subtest 'CanItemBeReserved / pickup_not_in_hold_group' => sub { {}, '*', '*', '*', 25 ); - $dbh->do('DELETE FROM branch_item_rules'); - $dbh->do('DELETE FROM default_branch_circ_rules'); - $dbh->do('DELETE FROM default_branch_item_rules'); - $dbh->do('DELETE FROM default_circ_rules'); + $dbh->do('DELETE FROM circulation_rules'); Koha::Items->search->delete; Koha::Biblios->search->delete; @@ -968,11 +997,17 @@ subtest 'CanItemBeReserved / pickup_not_in_hold_group' => sub { ); # Insert default circ rule of holds allowed only from local hold group for all libraries - $dbh->do( - q{INSERT INTO default_circ_rules (holdallowed, hold_fulfillment_policy, returnbranch) - VALUES (?,?,?)}, - {}, - 2, 'holdgroup', 'any' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 2, + hold_fulfillment_policy => 'holdgroup', + returnbranch => 'any' + } + } ); # Test 2: Patron 1 can place hold @@ -990,14 +1025,20 @@ subtest 'CanItemBeReserved / pickup_not_in_hold_group' => sub { ); # Cleanup default_cirt_rules - $dbh->do('DELETE FROM default_circ_rules'); + $dbh->do('DELETE FROM circulation_rules'); # Insert default circ rule to "any" for library 2 - $dbh->do( - q{INSERT INTO default_branch_circ_rules (branchcode, holdallowed, hold_fulfillment_policy, returnbranch) - VALUES (?,?,?,?)}, - {}, - $library2->branchcode, 2, 'any', 'any' + Koha::CirculationRules->set_rules( + { + branchcode => $library2->branchcode, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 2, + hold_fulfillment_policy => 'any', + returnbranch => 'any' + } + } ); # Test 4: Patron 3 can place hold @@ -1008,13 +1049,19 @@ subtest 'CanItemBeReserved / pickup_not_in_hold_group' => sub { ); # Update default circ rule to "hold group" for library 2 - $dbh->do( - q{UPDATE default_branch_circ_rules set hold_fulfillment_policy = ? - WHERE branchcode = ?}, - {}, - 'holdgroup', $library2->branchcode + Koha::CirculationRules->set_rules( + { + branchcode => $library2->branchcode, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 2, + hold_fulfillment_policy => 'holdgroup', + returnbranch => 'any' + } + } ); - + # Test 5: Patron 3 cannot place hold is_deeply( CanItemBeReserved( $patron3->borrowernumber, $itemnumber_2, $library3->branchcode ), @@ -1023,14 +1070,20 @@ subtest 'CanItemBeReserved / pickup_not_in_hold_group' => sub { ); # Cleanup default_branch_cirt_rules - $dbh->do('DELETE FROM default_branch_circ_rules'); + $dbh->do('DELETE FROM circulation_rules'); # Insert default item rule to "any" for itemtype 2 - $dbh->do( - q{INSERT INTO default_branch_item_rules (itemtype, holdallowed, hold_fulfillment_policy, returnbranch) - VALUES (?,?,?,?)}, - {}, - $itemtype2->itemtype, 2, 'any', 'any' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => $itemtype2->itemtype, + categorycode => undef, + rules => { + holdallowed => 2, + hold_fulfillment_policy => 'any', + returnbranch => 'any' + } + } ); # Test 6: Patron 3 can place hold @@ -1041,13 +1094,19 @@ subtest 'CanItemBeReserved / pickup_not_in_hold_group' => sub { ); # Update default item rule to "hold group" for itemtype 2 - $dbh->do( - q{UPDATE default_branch_item_rules set hold_fulfillment_policy = ? - WHERE itemtype = ?}, - {}, - 'holdgroup', $itemtype2->itemtype + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => $itemtype2->itemtype, + categorycode => undef, + rules => { + holdallowed => 2, + hold_fulfillment_policy => 'holdgroup', + returnbranch => 'any' + } + } ); - + # Test 7: Patron 3 cannot place hold is_deeply( CanItemBeReserved( $patron3->borrowernumber, $itemnumber_2, $library3->branchcode ), @@ -1056,14 +1115,20 @@ subtest 'CanItemBeReserved / pickup_not_in_hold_group' => sub { ); # Cleanup default_branch_item_rules - $dbh->do('DELETE FROM default_branch_item_rules'); + $dbh->do('DELETE FROM circulation_rules'); # Insert branch item rule to "any" for itemtype 2 and library 2 - $dbh->do( - q{INSERT INTO branch_item_rules (branchcode, itemtype, holdallowed, hold_fulfillment_policy, returnbranch) - VALUES (?,?,?,?,?)}, - {}, - $library2->branchcode, $itemtype2->itemtype, 2, 'any', 'any' + Koha::CirculationRules->set_rules( + { + branchcode => $library2->branchcode, + itemtype => $itemtype2->itemtype, + categorycode => undef, + rules => { + holdallowed => 2, + hold_fulfillment_policy => 'any', + returnbranch => 'any' + } + } ); # Test 8: Patron 3 can place hold @@ -1074,11 +1139,17 @@ subtest 'CanItemBeReserved / pickup_not_in_hold_group' => sub { ); # Update branch item rule to "hold group" for itemtype 2 and library 2 - $dbh->do( - q{UPDATE branch_item_rules set hold_fulfillment_policy = ? - WHERE branchcode = ? and itemtype = ?}, - {}, - 'holdgroup', $library2->branchcode, $itemtype2->itemtype + Koha::CirculationRules->set_rules( + { + branchcode => $library2->branchcode, + itemtype => $itemtype2->itemtype, + categorycode => undef, + rules => { + holdallowed => 2, + hold_fulfillment_policy => 'holdgroup', + returnbranch => 'any' + } + } ); # Test 9: Patron 3 cannot place hold diff --git a/t/db_dependent/Koha/Biblios.t b/t/db_dependent/Koha/Biblios.t index 9d3bca16bd..c03d28434e 100644 --- a/t/db_dependent/Koha/Biblios.t +++ b/t/db_dependent/Koha/Biblios.t @@ -209,10 +209,7 @@ subtest 'pickup_locations' => sub { {}, '*', '*', '*', 25 ); - $dbh->do('DELETE FROM branch_item_rules'); - $dbh->do('DELETE FROM default_branch_circ_rules'); - $dbh->do('DELETE FROM default_branch_item_rules'); - $dbh->do('DELETE FROM default_circ_rules'); + $dbh->do('DELETE FROM circulation_rules'); my $root1 = $builder->build_object( { class => 'Koha::Library::Groups', value => { ft_local_hold_group => 1 } } ); my $root2 = $builder->build_object( { class => 'Koha::Library::Groups', value => { ft_local_hold_group => 1 } } ); @@ -290,11 +287,17 @@ subtest 'pickup_locations' => sub { t::lib::Mocks::mock_preference('HomeOrHoldingBranch', 'homebranch'); #Case 1: holdallowed any, hold_fulfillment_policy any - $dbh->do( - q{INSERT INTO default_circ_rules (holdallowed, hold_fulfillment_policy, returnbranch) - VALUES (?,?,?)}, - {}, - 2, 'any', 'any' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 2, + hold_fulfillment_policy => 'any', + returnbranch => 'any' + } + } ); my @pl_1_1 = $biblio1->pickup_locations( { patron => $patron1 } ); @@ -306,10 +309,17 @@ subtest 'pickup_locations' => sub { ok(scalar(@pl_1_1) == 5 && scalar(@pl_1_4) == 5 && scalar(@pl_2_1) == 5 && scalar(@pl_2_4) == 5, 'Returns all libraries that are pickup locations'); #Case 2: holdallowed homebranch, hold_fulfillment_policy any, HomeOrHoldingBranch 'homebranch' - $dbh->do( - q{UPDATE default_circ_rules set holdallowed = ?, hold_fulfillment_policy = ?}, - {}, - 1, 'any' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 1, + hold_fulfillment_policy => 'any', + returnbranch => 'any' + } + } ); @pl_1_1 = $biblio1->pickup_locations( { patron => $patron1 } ); @@ -321,10 +331,17 @@ subtest 'pickup_locations' => sub { ok(scalar(@pl_1_4) == 0 && scalar(@pl_2_1) == 0, 'Returns no pickup locations'); #Case 3: holdallowed holdgroup, hold_fulfillment_policy any - $dbh->do( - q{UPDATE default_circ_rules set holdallowed = ?, hold_fulfillment_policy = ?}, - {}, - 3, 'any' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 3, + hold_fulfillment_policy => 'any', + returnbranch => 'any' + } + } ); @pl_1_1 = $biblio1->pickup_locations( { patron => $patron1 } ); @@ -335,10 +352,17 @@ subtest 'pickup_locations' => sub { ok(scalar(@pl_1_1) == 5 && scalar(@pl_2_4) == 5 && scalar(@pl_1_4) == 5 && scalar(@pl_2_1) == 5, 'Returns all libraries that are pickup_locations, when item\'s hombebranch is in patron\' holdgroup'); #Case 4: holdallowed any, hold_fulfillment_policy holdgroup - $dbh->do( - q{UPDATE default_circ_rules set holdallowed = ?, hold_fulfillment_policy = ?}, - {}, - 2, 'holdgroup' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 2, + hold_fulfillment_policy => 'holdgroup', + returnbranch => 'any' + } + } ); @pl_1_1 = $biblio1->pickup_locations( { patron => $patron1 } ); @@ -349,10 +373,17 @@ subtest 'pickup_locations' => sub { ok(scalar(@pl_1_1) == 3 && scalar(@pl_2_4) == 3 && scalar(@pl_1_4) == 3 && scalar(@pl_2_1) == 3, 'Returns libraries in item\'s holdgroup, and that are pickup_locations'); #Case 5: holdallowed homebranch, hold_fulfillment_policy holdgroup, HomeOrHoldingBranch 'homebranch' - $dbh->do( - q{UPDATE default_circ_rules set holdallowed = ?, hold_fulfillment_policy = ?}, - {}, - 1, 'holdgroup' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 1, + hold_fulfillment_policy => 'holdgroup', + returnbranch => 'any' + } + } ); @pl_1_1 = $biblio1->pickup_locations( { patron => $patron1 } ); @@ -364,10 +395,17 @@ subtest 'pickup_locations' => sub { ok(scalar(@pl_1_4) == 0 && scalar(@pl_2_1) == 0, 'Returns no pickup locations'); #Case 6: holdallowed holdgroup, hold_fulfillment_policy holdgroup - $dbh->do( - q{UPDATE default_circ_rules set holdallowed = ?, hold_fulfillment_policy = ?}, - {}, - 3, 'holdgroup' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 3, + hold_fulfillment_policy => 'holdgroup', + returnbranch => 'any' + } + } ); @pl_1_1 = $biblio1->pickup_locations( { patron => $patron1 } ); @@ -378,10 +416,17 @@ subtest 'pickup_locations' => sub { ok(scalar(@pl_1_1) == 2 && scalar(@pl_2_1) == 2 && scalar(@pl_2_4) == 1 && scalar(@pl_1_4) == 1, 'Returns libraries in item\'s holdgroup whose homebranch is included patron\'s holdgroup, and that are pickup_locations'); #Case 7: holdallowed any, hold_fulfillment_policy homebranch - $dbh->do( - q{UPDATE default_circ_rules set holdallowed = ?, hold_fulfillment_policy = ?}, - {}, - 2, 'homebranch' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 2, + hold_fulfillment_policy => 'homebranch', + returnbranch => 'any' + } + } ); @pl_1_1 = $biblio1->pickup_locations( { patron => $patron1 } ); @@ -392,10 +437,17 @@ subtest 'pickup_locations' => sub { ok(scalar(@pl_1_1) == 1 && scalar(@pl_1_4) == 1 && scalar(@pl_2_1) == 2 && scalar(@pl_2_4) == 2, 'Returns homebranch of items in biblio, that are pickup_locations'); #Case 8: holdallowed homebranch, hold_fulfillment_policy homebranch, HomeOrHoldingBranch 'homebranch' - $dbh->do( - q{UPDATE default_circ_rules set holdallowed = ?, hold_fulfillment_policy = ?}, - {}, - 1, 'homebranch' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 1, + hold_fulfillment_policy => 'homebranch', + returnbranch => 'any' + } + } ); @pl_1_1 = $biblio1->pickup_locations( { patron => $patron1 } ); @@ -407,10 +459,17 @@ subtest 'pickup_locations' => sub { ok(scalar(@pl_1_4) == 0 && scalar(@pl_2_1) == 0, 'No pickup locations returned'); #Case 9: holdallowed holdgroup, hold_fulfillment_policy homebranch - $dbh->do( - q{UPDATE default_circ_rules set holdallowed = ?, hold_fulfillment_policy = ?}, - {}, - 3, 'homebranch' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 3, + hold_fulfillment_policy => 'homebranch', + returnbranch => 'any' + } + } ); @pl_1_1 = $biblio1->pickup_locations( { patron => $patron1 } ); @@ -422,10 +481,17 @@ subtest 'pickup_locations' => sub { ok(scalar(@pl_1_4) == 0, 'No pickup locations returned'); #Case 10: holdallowed any, hold_fulfillment_policy holdingbranch - $dbh->do( - q{UPDATE default_circ_rules set holdallowed = ?, hold_fulfillment_policy = ?}, - {}, - 2, 'holdingbranch' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 2, + hold_fulfillment_policy => 'holdingbranch', + returnbranch => 'any' + } + } ); @pl_1_1 = $biblio1->pickup_locations( { patron => $patron1 } ); @@ -436,10 +502,17 @@ subtest 'pickup_locations' => sub { ok(scalar(@pl_1_1) == 2 && scalar(@pl_1_4) == 2 && scalar(@pl_2_1) == 2 && scalar(@pl_2_4) == 2, 'Returns holdingbranch of items in biblio, that are pickup_locations'); #Case 11: holdallowed homebranch, hold_fulfillment_policy holdingbranch, HomeOrHoldingBranch 'homebranch' - $dbh->do( - q{UPDATE default_circ_rules set holdallowed = ?, hold_fulfillment_policy = ?}, - {}, - 1, 'holdingbranch' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 1, + hold_fulfillment_policy => 'holdingbranch', + returnbranch => 'any' + } + } ); @pl_1_1 = $biblio1->pickup_locations( { patron => $patron1 } ); @@ -451,10 +524,17 @@ subtest 'pickup_locations' => sub { ok(scalar(@pl_1_4) == 0 && scalar(@pl_2_1) == 0, 'No pickup locations returned'); #Case 12: holdallowed holdgroup, hold_fulfillment_policy holdingbranch - $dbh->do( - q{UPDATE default_circ_rules set holdallowed = ?, hold_fulfillment_policy = ?}, - {}, - 3, 'holdingbranch' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 3, + hold_fulfillment_policy => 'holdingbranch', + returnbranch => 'any' + } + } ); @pl_1_1 = $biblio1->pickup_locations( { patron => $patron1 } ); @@ -467,10 +547,17 @@ subtest 'pickup_locations' => sub { t::lib::Mocks::mock_preference('HomeOrHoldingBranch', 'holdingbranch'); #Case 13: holdallowed homebranch, hold_fulfillment_policy any, HomeOrHoldingBranch 'holdingbranch' - $dbh->do( - q{UPDATE default_circ_rules set holdallowed = ?, hold_fulfillment_policy = ?}, - {}, - 1, 'any' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 1, + hold_fulfillment_policy => 'any', + returnbranch => 'any' + } + } ); @pl_1_1 = $biblio1->pickup_locations( { patron => $patron1 } ); @@ -482,10 +569,17 @@ subtest 'pickup_locations' => sub { ok(scalar(@pl_1_1) == 0, 'No pickup locations returned'); #Case 14: holdallowed homebranch, hold_fulfillment_policy holdgroup, HomeOrHoldingBranch 'holdingbranch' - $dbh->do( - q{UPDATE default_circ_rules set holdallowed = ?, hold_fulfillment_policy = ?}, - {}, - 1, 'holdgroup' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 1, + hold_fulfillment_policy => 'holdgroup', + returnbranch => 'any' + } + } ); @pl_1_1 = $biblio1->pickup_locations( { patron => $patron1 } ); @@ -497,10 +591,17 @@ subtest 'pickup_locations' => sub { ok(scalar(@pl_1_1) == 0, 'No pickup locations returned'); #Case 15: holdallowed homebranch, hold_fulfillment_policy homebranch, HomeOrHoldingBranch 'holdingbranch' - $dbh->do( - q{UPDATE default_circ_rules set holdallowed = ?, hold_fulfillment_policy = ?}, - {}, - 1, 'homebranch' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 1, + hold_fulfillment_policy => 'homebranch', + returnbranch => 'any' + } + } ); @pl_1_1 = $biblio1->pickup_locations( { patron => $patron1 } ); @@ -513,10 +614,17 @@ subtest 'pickup_locations' => sub { ok(scalar(@pl_1_1) == 0 && scalar(@pl_1_4) == 0, 'No pickup locations returned'); #Case 16: holdallowed homebranch, hold_fulfillment_policy holdingbranch, HomeOrHoldingBranch 'holdingbranch' - $dbh->do( - q{UPDATE default_circ_rules set holdallowed = ?, hold_fulfillment_policy = ?}, - {}, - 1, 'holdingbranch' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 1, + hold_fulfillment_policy => 'holdingbranch', + returnbranch => 'any' + } + } ); @pl_1_1 = $biblio1->pickup_locations( { patron => $patron1 } ); diff --git a/t/db_dependent/Koha/Items.t b/t/db_dependent/Koha/Items.t index e0e5faeedc..3629806647 100644 --- a/t/db_dependent/Koha/Items.t +++ b/t/db_dependent/Koha/Items.t @@ -186,10 +186,7 @@ subtest 'pickup_locations' => sub { {}, '*', '*', '*', 25 ); - $dbh->do('DELETE FROM branch_item_rules'); - $dbh->do('DELETE FROM default_branch_circ_rules'); - $dbh->do('DELETE FROM default_branch_item_rules'); - $dbh->do('DELETE FROM default_circ_rules'); + $dbh->do('DELETE FROM circulation_rules'); my $root1 = $builder->build_object( { class => 'Koha::Library::Groups', value => { ft_local_hold_group => 1 } } ); my $root2 = $builder->build_object( { class => 'Koha::Library::Groups', value => { ft_local_hold_group => 1 } } ); @@ -231,11 +228,17 @@ subtest 'pickup_locations' => sub { t::lib::Mocks::mock_preference('HomeOrHoldingBranch', 'homebranch'); #Case 1: holdallowed any, hold_fulfillment_policy any - $dbh->do( - q{INSERT INTO default_circ_rules (holdallowed, hold_fulfillment_policy, returnbranch) - VALUES (?,?,?)}, - {}, - 2, 'any', 'any' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 2, + hold_fulfillment_policy => 'any', + returnbranch => 'any' + } + } ); my @pl_1_1 = $item1->pickup_locations( { patron => $patron1 } ); @@ -246,10 +249,17 @@ subtest 'pickup_locations' => sub { ok(scalar(@pl_1_1) == scalar(@pl_1_4) && scalar(@pl_1_1) == scalar(@pl_3_1) && scalar(@pl_1_1) == scalar(@pl_3_4), 'All combinations of patron/item renders the same number of locations'); #Case 2: holdallowed homebranch, hold_fulfillment_policy any, HomeOrHoldingBranch 'homebranch' - $dbh->do( - q{UPDATE default_circ_rules set holdallowed = ?, hold_fulfillment_policy = ?}, - {}, - 1, 'any' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 1, + hold_fulfillment_policy => 'any', + returnbranch => 'any' + } + } ); @pl_1_1 = $item1->pickup_locations( { patron => $patron1 } ); @@ -261,10 +271,17 @@ subtest 'pickup_locations' => sub { ok(scalar(@pl_1_4) == 0 && scalar(@pl_3_1) == 0 && scalar(@pl_3_4) == 0, 'Any other combination renders no locations'); #Case 3: holdallowed holdgroup, hold_fulfillment_policy any - $dbh->do( - q{UPDATE default_circ_rules set holdallowed = ?, hold_fulfillment_policy = ?}, - {}, - 3, 'any' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 3, + hold_fulfillment_policy => 'any', + returnbranch => 'any' + } + } ); @pl_1_1 = $item1->pickup_locations( { patron => $patron1 } ); @@ -277,10 +294,17 @@ subtest 'pickup_locations' => sub { ok(scalar(@pl_1_4) == 0 && scalar(@pl_3_1) == 0, 'Any other combination renders no locations'); #Case 4: holdallowed any, hold_fulfillment_policy holdgroup - $dbh->do( - q{UPDATE default_circ_rules set holdallowed = ?, hold_fulfillment_policy = ?}, - {}, - 2, 'holdgroup' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 2, + hold_fulfillment_policy => 'holdgroup', + returnbranch => 'any' + } + } ); @pl_1_1 = $item1->pickup_locations( { patron => $patron1 } ); @@ -292,10 +316,17 @@ subtest 'pickup_locations' => sub { ok(scalar(@pl_3_1) == 1 && scalar(@pl_3_4) == 1, 'Pickup locations for item 3 renders all libraries in items\'s holdgroup that are pickup_locations'); #Case 5: holdallowed homebranch, hold_fulfillment_policy holdgroup, HomeOrHoldingBranch 'homebranch' - $dbh->do( - q{UPDATE default_circ_rules set holdallowed = ?, hold_fulfillment_policy = ?}, - {}, - 1, 'holdgroup' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 1, + hold_fulfillment_policy => 'holdgroup', + returnbranch => 'any' + } + } ); @pl_1_1 = $item1->pickup_locations( { patron => $patron1 } ); @@ -307,10 +338,17 @@ subtest 'pickup_locations' => sub { ok(scalar(@pl_1_4) == 0 && scalar(@pl_3_1) == 0 && scalar(@pl_3_4) == 0, 'Any other combination renders no locations'); #Case 6: holdallowed holdgroup, hold_fulfillment_policy holdgroup - $dbh->do( - q{UPDATE default_circ_rules set holdallowed = ?, hold_fulfillment_policy = ?}, - {}, - 3, 'holdgroup' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 3, + hold_fulfillment_policy => 'holdgroup', + returnbranch => 'any' + } + } ); @pl_1_1 = $item1->pickup_locations( { patron => $patron1 } ); @@ -323,10 +361,17 @@ subtest 'pickup_locations' => sub { ok(scalar(@pl_1_4) == 0 && scalar(@pl_3_1) == 0, 'Any other combination renders no locations'); #Case 7: holdallowed any, hold_fulfillment_policy homebranch - $dbh->do( - q{UPDATE default_circ_rules set holdallowed = ?, hold_fulfillment_policy = ?}, - {}, - 2, 'homebranch' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 2, + hold_fulfillment_policy => 'homebranch', + returnbranch => 'any' + } + } ); @pl_1_1 = $item1->pickup_locations( { patron => $patron1 } ); @@ -338,10 +383,17 @@ subtest 'pickup_locations' => sub { ok(scalar(@pl_3_1) == 0 && scalar(@pl_3_4) == 0, 'Any other combination renders no locations, because library3 is not pickup_location'); #Case 8: holdallowed homebranch, hold_fulfillment_policy homebranch, HomeOrHoldingBranch 'homebranch' - $dbh->do( - q{UPDATE default_circ_rules set holdallowed = ?, hold_fulfillment_policy = ?}, - {}, - 1, 'homebranch' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 1, + hold_fulfillment_policy => 'homebranch', + returnbranch => 'any' + } + } ); @pl_1_1 = $item1->pickup_locations( { patron => $patron1 } ); @@ -353,10 +405,17 @@ subtest 'pickup_locations' => sub { ok(scalar(@pl_1_4) == 0 && scalar(@pl_3_1) == 0 && scalar(@pl_3_4) == 0, 'Any other combination renders no locations'); #Case 9: holdallowed holdgroup, hold_fulfillment_policy homebranch - $dbh->do( - q{UPDATE default_circ_rules set holdallowed = ?, hold_fulfillment_policy = ?}, - {}, - 3, 'homebranch' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 3, + hold_fulfillment_policy => 'homebranch', + returnbranch => 'any' + } + } ); @pl_1_1 = $item1->pickup_locations( { patron => $patron1 } ); @@ -368,10 +427,17 @@ subtest 'pickup_locations' => sub { ok(scalar(@pl_1_4) == 0 && scalar(@pl_3_1) == 0 && scalar(@pl_3_4) == 0, 'Any other combination renders no locations'); #Case 10: holdallowed any, hold_fulfillment_policy holdingbranch - $dbh->do( - q{UPDATE default_circ_rules set holdallowed = ?, hold_fulfillment_policy = ?}, - {}, - 2, 'holdingbranch' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 2, + hold_fulfillment_policy => 'holdingbranch', + returnbranch => 'any' + } + } ); @pl_1_1 = $item1->pickup_locations( { patron => $patron1 } ); @@ -384,10 +450,17 @@ subtest 'pickup_locations' => sub { #Case 11: holdallowed homebranch, hold_fulfillment_policy holdingbranch, HomeOrHoldingBranch 'homebranch' - $dbh->do( - q{UPDATE default_circ_rules set holdallowed = ?, hold_fulfillment_policy = ?}, - {}, - 1, 'holdingbranch' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 1, + hold_fulfillment_policy => 'holdingbranch', + returnbranch => 'any' + } + } ); @pl_1_1 = $item1->pickup_locations( { patron => $patron1 } ); @@ -399,10 +472,17 @@ subtest 'pickup_locations' => sub { ok(scalar(@pl_1_4) == 0 && scalar(@pl_3_1) == 0 && scalar(@pl_3_4) == 0, 'Any other combination renders no locations'); #Case 12: holdallowed holdgroup, hold_fulfillment_policy holdingbranch - $dbh->do( - q{UPDATE default_circ_rules set holdallowed = ?, hold_fulfillment_policy = ?}, - {}, - 3, 'holdingbranch' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 3, + hold_fulfillment_policy => 'holdingbranch', + returnbranch => 'any' + } + } ); @pl_1_1 = $item1->pickup_locations( { patron => $patron1 } ); @@ -417,10 +497,17 @@ subtest 'pickup_locations' => sub { t::lib::Mocks::mock_preference('HomeOrHoldingBranch', 'holdingbranch'); #Case 13: holdallowed homebranch, hold_fulfillment_policy any, HomeOrHoldingBranch 'holdingbranch' - $dbh->do( - q{UPDATE default_circ_rules set holdallowed = ?, hold_fulfillment_policy = ?}, - {}, - 1, 'any' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 1, + hold_fulfillment_policy => 'any', + returnbranch => 'any' + } + } ); @pl_1_1 = $item1->pickup_locations( { patron => $patron1 } ); @@ -432,10 +519,17 @@ subtest 'pickup_locations' => sub { ok(scalar(@pl_1_4) == 0 && scalar(@pl_3_1) == 0 && scalar(@pl_1_1) == 0, 'Any other combination renders no locations'); #Case 14: holdallowed homebranch, hold_fulfillment_policy holdgroup, HomeOrHoldingBranch 'holdingbranch' - $dbh->do( - q{UPDATE default_circ_rules set holdallowed = ?, hold_fulfillment_policy = ?}, - {}, - 1, 'holdgroup' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 1, + hold_fulfillment_policy => 'holdgroup', + returnbranch => 'any' + } + } ); @pl_1_1 = $item1->pickup_locations( { patron => $patron1 } ); @@ -447,10 +541,17 @@ subtest 'pickup_locations' => sub { ok(scalar(@pl_1_4) == 0 && scalar(@pl_3_1) == 0 && scalar(@pl_1_1) == 0, 'Any other combination renders no locations'); #Case 15: holdallowed homebranch, hold_fulfillment_policy homebranch, HomeOrHoldingBranch 'holdingbranch' - $dbh->do( - q{UPDATE default_circ_rules set holdallowed = ?, hold_fulfillment_policy = ?}, - {}, - 1, 'homebranch' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 1, + hold_fulfillment_policy => 'homebranch', + returnbranch => 'any' + } + } ); @pl_1_1 = $item1->pickup_locations( { patron => $patron1 } ); @@ -462,10 +563,17 @@ subtest 'pickup_locations' => sub { ok(scalar(@pl_3_4) == 0 && scalar(@pl_1_4) == 0 && scalar(@pl_3_1) == 0 && scalar(@pl_1_1) == 0, 'Any combination of patron/item renders no locations'); #Case 16: holdallowed homebranch, hold_fulfillment_policy holdingbranch, HomeOrHoldingBranch 'holdingbranch' - $dbh->do( - q{UPDATE default_circ_rules set holdallowed = ?, hold_fulfillment_policy = ?}, - {}, - 1, 'holdingbranch' + Koha::CirculationRules->set_rules( + { + branchcode => undef, + itemtype => undef, + categorycode => undef, + rules => { + holdallowed => 1, + hold_fulfillment_policy => 'holdingbranch', + returnbranch => 'any' + } + } ); @pl_1_1 = $item1->pickup_locations( { patron => $patron1 } ); diff --git a/t/db_dependent/Koha/Libraries.t b/t/db_dependent/Koha/Libraries.t index 0b2f7271dd..cfa7382c29 100644 --- a/t/db_dependent/Koha/Libraries.t +++ b/t/db_dependent/Koha/Libraries.t @@ -38,6 +38,10 @@ use t::lib::TestBuilder; my $schema = Koha::Database->new->schema; $schema->storage->txn_begin; +# Cleanup default_branch_item_rules +my $dbh = C4::Context->dbh; +$dbh->do('DELETE FROM circulation_rules'); + my $builder = t::lib::TestBuilder->new; my $nb_of_libraries = Koha::Libraries->search->count; my $new_library_1 = Koha::Library->new({ -- 2.11.0