Bug 27259: Test HomeOrHoldingBranch usage in TooMany()

This shows that HomeOrHoldingBranch syspref is incorrectly not used by
TooMany() when it decides which circ rule to use.

Run "prove t/db_dependent/Circulation/TooMany.t" to notice the tests
now fail.

Signed-off-by: Petro Vashchuk <stalkernoid@gmail.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
Joonas Kylmälä 2020-12-18 12:22:46 +02:00 committed by Tomas Cohen Arazi
parent 535936ea9c
commit 15433772d0
Signed by: tomascohen
GPG key ID: 0A272EA1B2F3C15F

View file

@ -15,7 +15,7 @@
# with Koha; if not, see <http://www.gnu.org/licenses>. # with Koha; if not, see <http://www.gnu.org/licenses>.
use Modern::Perl; use Modern::Perl;
use Test::More tests => 10; use Test::More tests => 11;
use C4::Context; use C4::Context;
use C4::Members; use C4::Members;
@ -52,6 +52,10 @@ my $branch = $builder->build({
source => 'Branch', source => 'Branch',
}); });
my $branch2 = $builder->build({
source => 'Branch',
});
my $category = $builder->build({ my $category = $builder->build({
source => 'Category', source => 'Category',
}); });
@ -583,6 +587,8 @@ subtest 'General vs specific rules limit quantity correctly' => sub {
} }
); );
t::lib::Mocks::mock_preference('HomeOrHoldingBranch', 'homebranch');
is( is(
C4::Circulation::TooMany( $patron, $branch_item ), C4::Circulation::TooMany( $patron, $branch_item ),
undef, undef,
@ -655,7 +661,6 @@ subtest 'General vs specific rules limit quantity correctly' => sub {
'We are only allowed one for general rule, and have checked out two at this branch' 'We are only allowed one for general rule, and have checked out two at this branch'
); );
my $branch2 = $builder->build({source => 'Branch',});
t::lib::Mocks::mock_userenv({ branchcode => $branch2->{branchcode} }); t::lib::Mocks::mock_userenv({ branchcode => $branch2->{branchcode} });
is_deeply( is_deeply(
C4::Circulation::TooMany( $patron, $item_2 ), C4::Circulation::TooMany( $patron, $item_2 ),
@ -977,6 +982,70 @@ subtest 'itemtype group tests' => sub {
teardown(); teardown();
}; };
subtest 'HomeOrHoldingBranch is used' => sub {
plan tests => 2;
t::lib::Mocks::mock_preference( 'CircControl', 'ItemHomeLibrary' );
my $item_1 = $builder->build_sample_item(
{
homebranch => $branch->{branchcode},
holdingbranch => $branch2->{branchcode},
}
);
Koha::CirculationRules->set_rules(
{
branchcode => $branch->{branchcode},
categorycode => undef,
itemtype => undef,
rules => {
maxissueqty => 0,
}
}
);
Koha::CirculationRules->set_rules(
{
branchcode => $branch2->{branchcode},
categorycode => undef,
itemtype => undef,
rules => {
maxissueqty => 1,
}
}
);
t::lib::Mocks::mock_userenv({ branchcode => $branch2->{branchcode} });
my $issue = C4::Circulation::AddIssue( $patron, $item_1->barcode, dt_from_string() );
t::lib::Mocks::mock_preference('HomeOrHoldingBranch', 'homebranch');
is_deeply(
C4::Circulation::TooMany( $patron, $item_1 ),
{
reason => 'TOO_MANY_CHECKOUTS',
max_allowed => 0,
count => 1,
},
'We are allowed zero issues from the homebranch specifically'
);
t::lib::Mocks::mock_preference('HomeOrHoldingBranch', 'holdingbranch');
is_deeply(
C4::Circulation::TooMany( $patron, $item_1 ),
{
reason => 'TOO_MANY_CHECKOUTS',
max_allowed => 1,
count => 1,
},
'We are allowed one issue from the holdingbranch specifically'
);
teardown();
};
$schema->storage->txn_rollback; $schema->storage->txn_rollback;
sub teardown { sub teardown {