|
Lines 8-14
use C4::Items;
Link Here
|
| 8 |
use Koha::Items; |
8 |
use Koha::Items; |
| 9 |
use Koha::CirculationRules; |
9 |
use Koha::CirculationRules; |
| 10 |
|
10 |
|
| 11 |
use Test::More tests => 10; |
11 |
use Test::More tests => 11; |
| 12 |
|
12 |
|
| 13 |
use t::lib::TestBuilder; |
13 |
use t::lib::TestBuilder; |
| 14 |
use t::lib::Mocks; |
14 |
use t::lib::Mocks; |
|
Lines 285-290
is( $is, 1, "Items availability: 1 item is available, 1 item held in T" );
Link Here
|
| 285 |
$is = IsAvailableForItemLevelRequest( $item3, $patron1); |
285 |
$is = IsAvailableForItemLevelRequest( $item3, $patron1); |
| 286 |
is( $is, 1, "Item can be held, items in transit are not available" ); |
286 |
is( $is, 1, "Item can be held, items in transit are not available" ); |
| 287 |
|
287 |
|
|
|
288 |
subtest 'Check holds availability with different item types' => sub { |
| 289 |
plan tests => 6; |
| 290 |
|
| 291 |
# Check for holds availability when different item types have different |
| 292 |
# smart rules assigned both with "if all unavailable" set, |
| 293 |
# and $itemtype rule allows holds, $itemtype2 rule disallows holds. |
| 294 |
# So, $item should be available for hold when checked out even if $item2 |
| 295 |
# is not checked out, because anyway $item2 unavailable for holds by rule |
| 296 |
# (Bug 24683): |
| 297 |
|
| 298 |
my $biblio2 = $builder->build_sample_biblio( { itemtype => $itemtype } ); |
| 299 |
my $biblionumber1 = $biblio2->biblionumber; |
| 300 |
my $item4 = $builder->build_sample_item( |
| 301 |
{ biblionumber => $biblionumber1, |
| 302 |
itype => $itemtype, |
| 303 |
homebranch => $library_A, |
| 304 |
holdingbranch => $library_A |
| 305 |
} |
| 306 |
); |
| 307 |
my $item5 = $builder->build_sample_item( |
| 308 |
{ biblionumber => $biblionumber1, |
| 309 |
itype => $itemtype2, |
| 310 |
homebranch => $library_A, |
| 311 |
holdingbranch => $library_A |
| 312 |
} |
| 313 |
); |
| 314 |
|
| 315 |
# Test hold_fulfillment_policy |
| 316 |
$dbh->do("DELETE FROM circulation_rules"); |
| 317 |
Koha::CirculationRules->set_rules( |
| 318 |
{ categorycode => undef, |
| 319 |
itemtype => $itemtype, |
| 320 |
branchcode => undef, |
| 321 |
rules => { |
| 322 |
issuelength => 7, |
| 323 |
lengthunit => 8, |
| 324 |
reservesallowed => 99, |
| 325 |
holds_per_record => 99, |
| 326 |
onshelfholds => 2, |
| 327 |
} |
| 328 |
} |
| 329 |
); |
| 330 |
Koha::CirculationRules->set_rules( |
| 331 |
{ categorycode => undef, |
| 332 |
itemtype => $itemtype2, |
| 333 |
branchcode => undef, |
| 334 |
rules => { |
| 335 |
issuelength => 7, |
| 336 |
lengthunit => 8, |
| 337 |
reservesallowed => 0, |
| 338 |
holds_per_record => 0, |
| 339 |
onshelfholds => 2, |
| 340 |
} |
| 341 |
} |
| 342 |
); |
| 343 |
|
| 344 |
$is = ItemsAnyAvailableAndNotRestricted( { biblionumber => $biblionumber1, patron => $patron1 } ); |
| 345 |
is( $is, 1, "Items availability: 2 items, one allowed by smart rule but not checked out, another one not allowed to be held by smart rule" ); |
| 346 |
|
| 347 |
$is = IsAvailableForItemLevelRequest( $item4, $patron1 ); |
| 348 |
is( $is, 0, "Item4 cannot be requested to hold: 2 items, Item4 available, Item5 restricted" ); |
| 349 |
|
| 350 |
$is = IsAvailableForItemLevelRequest( $item5, $patron1 ); |
| 351 |
is( $is, 0, "Item5 cannot be requested to hold: 2 items, Item4 available, Item5 restricted" ); |
| 352 |
|
| 353 |
AddIssue( $patron2->unblessed, $item4->barcode ); |
| 354 |
|
| 355 |
$is = ItemsAnyAvailableAndNotRestricted( { biblionumber => $biblionumber1, patron => $patron1 } ); |
| 356 |
is( $is, 0, "Items availability: 2 items, one allowed by smart rule and checked out, another one not allowed to be held by smart rule" ); |
| 357 |
|
| 358 |
$is = IsAvailableForItemLevelRequest( $item4, $patron1 ); |
| 359 |
is( $is, 1, "Item4 can be requested to hold, 2 items, Item4 checked out, Item5 restricted" ); |
| 360 |
|
| 361 |
$is = IsAvailableForItemLevelRequest( $item5, $patron1 ); |
| 362 |
# Note: read IsAvailableForItemLevelRequest sub description about CanItemBeReserved/CanBookBeReserved: |
| 363 |
is( $is, 1, "Item5 can be requested to hold, 2 items, Item4 checked out, Item5 restricted" ); |
| 364 |
}; |
| 365 |
|
| 366 |
|
| 288 |
# Cleanup |
367 |
# Cleanup |
| 289 |
$schema->storage->txn_rollback; |
368 |
$schema->storage->txn_rollback; |
| 290 |
|
369 |
|
| 291 |
- |
|
|