@@ -, +, @@
---
..._add_ft_local_hold_group_to_library_groups.perl | 5 -
.../prog/en/modules/admin/smart-rules.tt | 6 +-
t/db_dependent/Holds.t | 269 +++++++++++++--------
t/db_dependent/Koha/Biblios.t | 246 +++++++++++++------
t/db_dependent/Koha/Items.t | 246 +++++++++++++------
t/db_dependent/Koha/Libraries.t | 4 +
6 files changed, 531 insertions(+), 245 deletions(-)
--- a/installer/data/mysql/atomicupdate/bug_22284_add_ft_local_hold_group_to_library_groups.perl
+++ a/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";
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tt
+++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tt
@@ -437,7 +437,7 @@
From any library
- [% IF holdallowed == 3 %]
+ [% IF holdallowed == 3 %]
[% END %]
- [% IF hold_fulfillment_policy == 'holdgroup' %]
+ [% IF hold_fulfillment_policy == 'holdgroup' %]
@@ -753,7 +753,7 @@
[% IF holdallowed == 2 %]
From any library
- [% ELSIF holdallowed == 3 %]
+ [% ELSIF holdallowed == 3 %]
From local hold group
[% ELSIF holdallowed == 1 %]
From home library
--- a/t/db_dependent/Holds.t
+++ a/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,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
@@ -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,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
@@ -878,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
@@ -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,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
@@ -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,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
@@ -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
--- a/t/db_dependent/Koha/Biblios.t
+++ a/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 } );
--- a/t/db_dependent/Koha/Items.t
+++ a/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 } );
--- a/t/db_dependent/Koha/Libraries.t
+++ a/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({
--
|