Browse Source

Bug 22284: (follow-up) Squash multiple follow-ups

* 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>
20.05.x
Agustin Moyano 4 years ago
committed by Martin Renvoize
parent
commit
da620fdf91
Signed by: martin.renvoize GPG Key ID: 422B469130441A0F
  1. 14
      C4/Reserves.pm
  2. 2
      Koha/Biblio.pm
  3. 2
      Koha/Item.pm
  4. 7
      installer/data/mysql/atomicupdate/bug_22284_add_ft_local_hold_group_to_library_groups.perl
  5. 6
      koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tt
  6. 265
      t/db_dependent/Holds.t
  7. 246
      t/db_dependent/Koha/Biblios.t
  8. 246
      t/db_dependent/Koha/Items.t
  9. 4
      t/db_dependent/Koha/Libraries.t

14
C4/Reserves.pm

@ -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;

2
Koha/Biblio.pm

@ -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} );
}

2
Koha/Item.pm

@ -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} );

7
installer/data/mysql/atomicupdate/bug_22284_add_ft_local_hold_group_to_library_groups.perl

@ -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";
}

6
koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tt

@ -443,7 +443,7 @@
From any library
</option>
[% IF holdallowed == 3 %]
[% IF holdallowed == 3 %]
<option value="3" selected="selected">
[% ELSE %]
<option value="3">
@ -486,7 +486,7 @@
</option>
[% END %]
[% IF hold_fulfillment_policy == 'holdgroup' %]
[% IF hold_fulfillment_policy == 'holdgroup' %]
<option value="holdgroup" selected="selected">
item's hold group
</option>
@ -759,7 +759,7 @@
<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>

265
t/db_dependent/Holds.t

@ -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

246
t/db_dependent/Koha/Biblios.t

@ -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 } );

246
t/db_dependent/Koha/Items.t

@ -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 } );

4
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({

Loading…
Cancel
Save