Bug 22284: (follow-up) Squash multiple follow-ups
authorAgustin Moyano <agustinmoyano@theke.io>
Tue, 23 Apr 2019 19:18:59 +0000 (16:18 -0300)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Fri, 3 Jan 2020 12:58:05 +0000 (12:58 +0000)
  * Bug 22284: (follow-up) Remove commented warn and address test failures
  * Bug 22284: (follow-up) fix test count after merge
  * Bug 22284: (follow-up) fixes after 15496
  * Bug 22284: (follow-up) fixes after 18936
  * Bug 22284: (follow-up) Remove HomeOrHolding from reserves

Signed-off-by: Liz Rea <wizzyrea@gmail.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

C4/Reserves.pm
Koha/Biblio.pm
Koha/Item.pm
installer/data/mysql/atomicupdate/bug_22284_add_ft_local_hold_group_to_library_groups.perl
koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tt
t/db_dependent/Holds.t
t/db_dependent/Koha/Biblios.t
t/db_dependent/Koha/Items.t
t/db_dependent/Koha/Libraries.t

index 913fad3..5f11c31 100644 (file)
@@ -475,11 +475,9 @@ sub CanItemBeReserved {
         return { status => 'cannotReserveFromOtherBranches' };
     }
 
-    my $branch_control = C4::Context->preference('HomeOrHoldingBranch');
-    my $itembranchcode = $branch_control eq 'holdingbranch' ? $item->holdingbranch : $item->homebranch;
-    my $item_library = Koha::Libraries->find( {branchcode => $itembranchcode} );
+    my $item_library = Koha::Libraries->find( {branchcode => $item->homebranch} );
     if ( $branchitemrule->{holdallowed} == 3) {
-        if($borrower->{branchcode} ne $itembranchcode && !$item_library->validate_hold_sibling( {branchcode => $borrower->{branchcode}} )) {
+        if($borrower->{branchcode} ne $item->homebranch && !$item_library->validate_hold_sibling( {branchcode => $borrower->{branchcode}} )) {
             return { status => 'branchNotInHoldGroup' };
         }
     }
@@ -824,7 +822,7 @@ sub CheckReserves {
                     my $branchitemrule = C4::Circulation::GetBranchItemRule($branch,$item->effective_itemtype);
                     next if ($branchitemrule->{'holdallowed'} == 0);
                     next if (($branchitemrule->{'holdallowed'} == 1) && ($branch ne $patron->branchcode));
-                    my $library = Koha::Libraries->find({branchcode=>$branch});
+                    my $library = Koha::Libraries->find({branchcode=>$item->homebranch});
                     next if (($branchitemrule->{'holdallowed'} == 3) && (!$library->validate_hold_sibling({branchcode => $patron->branchcode}) ));
                     my $hold_fulfillment_policy = $branchitemrule->{hold_fulfillment_policy};
                     next if ( ($hold_fulfillment_policy eq 'holdgroup') && (!$library->validate_hold_sibling({branchcode => $res->{branchcode}})) );
@@ -1242,9 +1240,7 @@ sub IsAvailableForItemLevelRequest {
         foreach my $i (@items) {
             my $reserves_control_branch = GetReservesControlBranch( $i->unblessed(), $patron->unblessed );
             my $branchitemrule = C4::Circulation::GetBranchItemRule( $reserves_control_branch, $i->itype );
-            my $branch_control = C4::Context->preference('HomeOrHoldingBranch');
-            my $itembranchcode = $branch_control eq 'holdingbranch' ? $item->holdingbranch : $item->homebranch;
-            my $item_library = Koha::Libraries->find( {branchcode => $itembranchcode} );
+            my $item_library = Koha::Libraries->find( {branchcode => $i->homebranch} );
 
 
             $any_available = 1
@@ -1257,7 +1253,7 @@ sub IsAvailableForItemLevelRequest {
                 && !C4::Context->preference('AllowHoldsOnDamagedItems') )
               || Koha::ItemTypes->find( $i->effective_itemtype() )->notforloan
               || $branchitemrule->{holdallowed} == 1 && $patron->branchcode ne $i->homebranch
-              || $branchitemrule->{holdallowed} == 3 && !$item_library->validate_hold_sibling( {branchcode => $pickup_branchcode} );
+              || $branchitemrule->{holdallowed} == 3 && !$item_library->validate_hold_sibling( {branchcode => $patron->branchcode} );
         }
 
         return $any_available ? 0 : 1;
index 8fdc253..9ffc533 100644 (file)
@@ -185,7 +185,7 @@ sub pickup_locations {
     my $patron = $params->{patron};
 
     my @pickup_locations;
-    foreach my $item_of_bib ($self->items) {
+    foreach my $item_of_bib ($self->items->as_list) {
         push @pickup_locations, $item_of_bib->pickup_locations( {patron => $patron} );
     }
 
index c4033fe..3cab6d2 100644 (file)
@@ -316,8 +316,6 @@ sub pickup_locations {
     my $branch_control = C4::Context->preference('HomeOrHoldingBranch');
     my $library = $branch_control eq 'holdingbranch' ? $self->holding_branch : $self->home_branch;
 
-    #warn $branch_control.' '.$branchitemrule->{holdallowed}.' '.$library->branchcode.' '.$patron->branchcode;
-
     my @libs;
     if(defined $patron) {
         return @libs if $branchitemrule->{holdallowed} == 3 && !$library->validate_hold_sibling( {branchcode => $patron->branchcode} );
index fba0b32..d996afa 100644 (file)
@@ -5,12 +5,7 @@ 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";
+    print "Upgrade to $DBversion done (Bug 22284 - Add ft_local_hold_group column to library_groups)\n";
 }
index 4f04428..7018200 100644 (file)
                                 From any library
                             </option>
 
-                           [% IF holdallowed == 3 %]
+                            [% IF holdallowed == 3 %]
                             <option value="3" selected="selected">
                             [% ELSE %]
                             <option value="3">
                                 </option>
                             [% END %]
 
-                           [% IF hold_fulfillment_policy == 'holdgroup' %]
+                            [% IF hold_fulfillment_policy == 'holdgroup' %]
                                 <option value="holdgroup" selected="selected">
                                     item's hold group
                                 </option>
                             <td>
                                 [% IF holdallowed == 2 %]
                                     <span>From any library</span>
-                               [% ELSIF holdallowed == 3 %]
+                                [% ELSIF holdallowed == 3 %]
                                     <span>From local hold group</span>
                                 [% ELSIF holdallowed == 1 %]
                                     <span>From home library</span>
index 92f38c3..2ecbdb4 100755 (executable)
@@ -7,7 +7,7 @@ use t::lib::TestBuilder;
 
 use C4::Context;
 
-use Test::More tests => 60;
+use Test::More tests => 61;
 use MARC::Record;
 
 use C4::Biblio;
@@ -244,13 +244,14 @@ is( $hold->priority, '6', "Test AlterPriority(), move to bottom" );
 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);
-$dbh->do('DELETE FROM issuingrules');
-$dbh->do(
-    q{INSERT INTO issuingrules (categorycode, branchcode, itemtype, reservesallowed, holds_per_record)
-      VALUES (?, ?, ?, ?, ?)},
-    {},
-    '*', '*', '*', 25, 99
-);
+# Cleanup circulation rules
+$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 (?, ?, ?, ?, ?)},
@@ -565,6 +566,8 @@ 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 circulation_rules');
     Koha::Items->search->delete;
     Koha::Biblios->search->delete;
 
@@ -705,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;
@@ -762,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
@@ -784,14 +790,20 @@ 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
@@ -802,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
@@ -817,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
@@ -835,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
@@ -850,14 +880,20 @@ 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
@@ -868,11 +904,17 @@ 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
@@ -901,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;
@@ -958,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
@@ -980,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
@@ -998,11 +1049,17 @@ 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
@@ -1013,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
@@ -1031,11 +1094,17 @@ 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
@@ -1046,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
@@ -1064,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
index 0d5ac58..be9caf9 100644 (file)
@@ -237,10 +237,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 } } );
@@ -318,11 +315,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 } );
@@ -334,10 +337,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 } );
@@ -349,10 +359,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 } );
@@ -363,10 +380,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 } );
@@ -377,10 +401,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 } );
@@ -392,10 +423,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 } );
@@ -406,10 +444,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 } );
@@ -420,10 +465,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 } );
@@ -435,10 +487,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 } );
@@ -450,10 +509,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 } );
@@ -464,10 +530,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 } );
@@ -479,10 +552,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 } );
@@ -495,10 +575,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 } );
@@ -510,10 +597,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 } );
@@ -525,10 +619,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 } );
@@ -541,10 +642,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 } );
index cf4cf46..90cd718 100644 (file)
@@ -196,10 +196,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 } } );
@@ -241,11 +238,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 } );
@@ -256,10 +259,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 } );
@@ -271,10 +281,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 } );
@@ -287,10 +304,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 } );
@@ -302,10 +326,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 } );
@@ -317,10 +348,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 } );
@@ -333,10 +371,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 } );
@@ -348,10 +393,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 } );
@@ -363,10 +415,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 } );
@@ -378,10 +437,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 } );
@@ -394,10 +460,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 } );
@@ -409,10 +482,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 } );
@@ -427,10 +507,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 } );
@@ -442,10 +529,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 } );
@@ -457,10 +551,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 } );
@@ -472,10 +573,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 } );
index 87fd28a..a59b4f7 100644 (file)
@@ -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({