|
Lines 19-31
Link Here
|
| 19 |
|
19 |
|
| 20 |
use Modern::Perl; |
20 |
use Modern::Perl; |
| 21 |
|
21 |
|
| 22 |
use Test::More tests => 1; |
22 |
use Test::More tests => 2; |
| 23 |
|
23 |
|
| 24 |
use Benchmark; |
24 |
use Benchmark; |
| 25 |
|
25 |
|
| 26 |
use Koha::IssuingRules; |
26 |
use Koha::IssuingRules; |
| 27 |
|
27 |
|
| 28 |
use t::lib::TestBuilder; |
28 |
use t::lib::TestBuilder; |
|
|
29 |
use t::lib::Mocks; |
| 29 |
|
30 |
|
| 30 |
my $schema = Koha::Database->new->schema; |
31 |
my $schema = Koha::Database->new->schema; |
| 31 |
$schema->storage->txn_begin; |
32 |
$schema->storage->txn_begin; |
|
Lines 241-246
subtest 'get_effective_issuing_rule' => sub {
Link Here
|
| 241 |
}; |
242 |
}; |
| 242 |
}; |
243 |
}; |
| 243 |
|
244 |
|
|
|
245 |
subtest 'get_opacitemholds_policy' => sub { |
| 246 |
plan tests => 4; |
| 247 |
my $itype = $builder->build_object({ class => 'Koha::ItemTypes' }); |
| 248 |
my $itemtype = $builder->build_object({ class => 'Koha::ItemTypes' }); |
| 249 |
my $library = $builder->build_object({ class => 'Koha::Libraries' }); |
| 250 |
my $patron = $builder->build_object({ class => 'Koha::Patrons' }); |
| 251 |
my $biblio = $builder->build_object({ class => 'Koha::Biblios' }); |
| 252 |
my $biblioitem = $builder->build_object( { class => 'Koha::Biblioitems', value => { itemtype => $itemtype->itemtype, biblionumber => $biblio->biblionumber } } ); |
| 253 |
my $item = $builder->build_object( |
| 254 |
{ class => 'Koha::Items', |
| 255 |
value => { |
| 256 |
homebranch => $library->branchcode, |
| 257 |
holdingbranch => $library->branchcode, |
| 258 |
notforloan => 0, |
| 259 |
itemlost => 0, |
| 260 |
withdrawn => 0, |
| 261 |
biblionumber => $biblio->biblionumber, |
| 262 |
biblioitemnumber => $biblioitem->biblioitemnumber, |
| 263 |
itype => $itype->itemtype, |
| 264 |
} |
| 265 |
} |
| 266 |
); |
| 267 |
|
| 268 |
Koha::IssuingRules->delete; |
| 269 |
Koha::IssuingRule->new({categorycode => '*', itemtype => '*', branchcode => '*', opacitemholds => "N"})->store; |
| 270 |
Koha::IssuingRule->new({categorycode => '*', itemtype => $itype->itemtype, branchcode => '*', opacitemholds => "Y"})->store; |
| 271 |
Koha::IssuingRule->new({categorycode => '*', itemtype => $itemtype->itemtype, branchcode => '*', opacitemholds => "N"})->store; |
| 272 |
t::lib::Mocks::mock_preference('item-level_itypes', 1); |
| 273 |
my $opacitemholds = Koha::IssuingRules->get_opacitemholds_policy( { item => $item, patron => $patron } ); |
| 274 |
is ( $opacitemholds, 'Y', 'Patrons can place a hold on this itype'); |
| 275 |
t::lib::Mocks::mock_preference('item-level_itypes', 0); |
| 276 |
$opacitemholds = Koha::IssuingRules->get_opacitemholds_policy( { item => $item, patron => $patron } ); |
| 277 |
is ( $opacitemholds, '', 'Patrons cannot place a hold on this itemtype'); |
| 278 |
|
| 279 |
Koha::IssuingRules->delete; |
| 280 |
Koha::IssuingRule->new({categorycode => '*', itemtype => '*', branchcode => '*', opacitemholds => "N"})->store; |
| 281 |
Koha::IssuingRule->new({categorycode => '*', itemtype => $itype->itemtype, branchcode => '*', opacitemholds => "N"})->store; |
| 282 |
Koha::IssuingRule->new({categorycode => '*', itemtype => $itemtype->itemtype, branchcode => '*', opacitemholds => "Y"})->store; |
| 283 |
t::lib::Mocks::mock_preference('item-level_itypes', 1); |
| 284 |
$opacitemholds = Koha::IssuingRules->get_opacitemholds_policy( { item => $item, patron => $patron } ); |
| 285 |
is ( $opacitemholds, '', 'Patrons cannot place a hold on this itype'); |
| 286 |
t::lib::Mocks::mock_preference('item-level_itypes', 0); |
| 287 |
$opacitemholds = Koha::IssuingRules->get_opacitemholds_policy( { item => $item, patron => $patron } ); |
| 288 |
is ( $opacitemholds, 'Y', 'Patrons can place a hold on this itemtype'); |
| 289 |
|
| 290 |
$patron->delete; |
| 291 |
}; |
| 292 |
|
| 244 |
sub _row_match { |
293 |
sub _row_match { |
| 245 |
my ($rule, $branchcode, $categorycode, $itemtype) = @_; |
294 |
my ($rule, $branchcode, $categorycode, $itemtype) = @_; |
| 246 |
|
295 |
|
| 247 |
- |
|
|