|
Lines 8-14
use t::lib::TestBuilder;
Link Here
|
| 8 |
use C4::Context; |
8 |
use C4::Context; |
| 9 |
use C4::Branch; |
9 |
use C4::Branch; |
| 10 |
|
10 |
|
| 11 |
use Test::More tests => 60; |
11 |
use Test::More tests => 63; |
| 12 |
use MARC::Record; |
12 |
use MARC::Record; |
| 13 |
use C4::Biblio; |
13 |
use C4::Biblio; |
| 14 |
use C4::Items; |
14 |
use C4::Items; |
|
Lines 333-342
ModReserve({ reserve_id => $reserveid2, rank => 'del' });
Link Here
|
| 333 |
$reserve3 = GetReserve( $reserveid3 ); |
333 |
$reserve3 = GetReserve( $reserveid3 ); |
| 334 |
is( $reserve3->{priority}, 1, "After ModReserve, the 3rd reserve becomes the first on the waiting list" ); |
334 |
is( $reserve3->{priority}, 1, "After ModReserve, the 3rd reserve becomes the first on the waiting list" ); |
| 335 |
|
335 |
|
|
|
336 |
ok( defined( ( CheckReserves($itemnumber) )[1] ), "Hold can be trapped for damaged item with AllowHoldsOnDamagedItems enabled" ); |
| 337 |
|
| 336 |
ModItem({ damaged => 1 }, $item_bibnum, $itemnumber); |
338 |
ModItem({ damaged => 1 }, $item_bibnum, $itemnumber); |
|
|
339 |
CancelReserve({reserve_id => $reserveid3}); |
| 337 |
t::lib::Mocks::mock_preference( 'AllowHoldsOnDamagedItems', 1 ); |
340 |
t::lib::Mocks::mock_preference( 'AllowHoldsOnDamagedItems', 1 ); |
| 338 |
ok( CanItemBeReserved( $borrowernumbers[0], $itemnumber) eq 'OK', "Patron can reserve damaged item with AllowHoldsOnDamagedItems enabled" ); |
341 |
ok( CanItemBeReserved( $borrowernumbers[0], $itemnumber) eq 'OK', "Patron can reserve damaged item with AllowHoldsOnDamagedItems enabled" ); |
| 339 |
ok( defined( ( CheckReserves($itemnumber) )[1] ), "Hold can be trapped for damaged item with AllowHoldsOnDamagedItems enabled" ); |
|
|
| 340 |
t::lib::Mocks::mock_preference( 'AllowHoldsOnDamagedItems', 0 ); |
342 |
t::lib::Mocks::mock_preference( 'AllowHoldsOnDamagedItems', 0 ); |
| 341 |
ok( CanItemBeReserved( $borrowernumbers[0], $itemnumber) eq 'damaged', "Patron cannot reserve damaged item with AllowHoldsOnDamagedItems disabled" ); |
343 |
ok( CanItemBeReserved( $borrowernumbers[0], $itemnumber) eq 'damaged', "Patron cannot reserve damaged item with AllowHoldsOnDamagedItems disabled" ); |
| 342 |
ok( !defined( ( CheckReserves($itemnumber) )[1] ), "Hold cannot be trapped for damaged item with AllowHoldsOnDamagedItems disabled" ); |
344 |
ok( !defined( ( CheckReserves($itemnumber) )[1] ), "Hold cannot be trapped for damaged item with AllowHoldsOnDamagedItems disabled" ); |
|
Lines 351-373
AddReserve(
Link Here
|
| 351 |
'', |
353 |
'', |
| 352 |
1, |
354 |
1, |
| 353 |
); |
355 |
); |
|
|
356 |
my ($bibnum2, $title2, $bibitemnum2) = create_helper_biblio('CANNOT'); |
| 357 |
my ($item_bibnum2, $item_bibitemnum2, $itemnumber2) = AddItem({ homebranch => $branch_1, holdingbranch => $branch_1, itype => 'CANNOT' } , $bibnum2); |
| 354 |
ok( |
358 |
ok( |
| 355 |
CanItemBeReserved( $borrowernumbers[0], $itemnumber) eq 'tooManyReserves', |
359 |
CanItemBeReserved( $borrowernumbers[0], $itemnumber2) eq 'tooManyReserves', |
| 356 |
"cannot request item if policy that matches on item-level item type forbids it" |
360 |
"cannot request item if policy that matches on item-level item type forbids it" |
| 357 |
); |
361 |
); |
| 358 |
ModItem({ itype => 'CAN' }, $item_bibnum, $itemnumber); |
362 |
ModItem({ itype => 'CAN' }, $item_bibnum2, $itemnumber2); |
| 359 |
ok( |
363 |
ok( |
| 360 |
CanItemBeReserved( $borrowernumbers[0], $itemnumber) eq 'OK', |
364 |
CanItemBeReserved( $borrowernumbers[0], $itemnumber2) eq 'OK', |
| 361 |
"can request item if policy that matches on item type allows it" |
365 |
"can request item if policy that matches on item type allows it" |
| 362 |
); |
366 |
); |
| 363 |
|
367 |
|
| 364 |
t::lib::Mocks::mock_preference('item-level_itypes', 0); |
368 |
t::lib::Mocks::mock_preference('item-level_itypes', 0); |
| 365 |
ModItem({ itype => undef }, $item_bibnum, $itemnumber); |
369 |
ModItem({ itype => undef }, $item_bibnum2, $itemnumber2); |
| 366 |
ok( |
370 |
ok( |
| 367 |
CanItemBeReserved( $borrowernumbers[0], $itemnumber) eq 'tooManyReserves', |
371 |
CanItemBeReserved( $borrowernumbers[0], $itemnumber2) eq 'tooManyReserves', |
| 368 |
"cannot request item if policy that matches on bib-level item type forbids it (bug 9532)" |
372 |
"cannot request item if policy that matches on bib-level item type forbids it (bug 9532)" |
| 369 |
); |
373 |
); |
| 370 |
|
374 |
|
|
|
375 |
is(CanBookBeReserved($borrowernumbers[0], $bibnum), 'alreadyReserved'); |
| 376 |
|
| 377 |
C4::Context->set_preference('maxreserves', 1); |
| 378 |
ok(CanBookBeReserved($borrowernumbers[0], $biblionumber) eq 'tooManyReserves'); |
| 379 |
|
| 380 |
C4::Context->set_preference('maxreserves', 0); |
| 381 |
t::lib::Mocks::mock_preference('IndependentBranches', 1); |
| 382 |
t::lib::Mocks::mock_preference('canreservefromotherbranches', 0); |
| 383 |
ok(CanBookBeReserved($borrowernumbers[0], $foreign_bibnum) eq 'none_available'); |
| 371 |
|
384 |
|
| 372 |
# Test branch item rules |
385 |
# Test branch item rules |
| 373 |
|
386 |
|
|
Lines 477-486
sub create_helper_biblio {
Link Here
|
| 477 |
my $itemtype = shift; |
490 |
my $itemtype = shift; |
| 478 |
my $bib = MARC::Record->new(); |
491 |
my $bib = MARC::Record->new(); |
| 479 |
my $title = 'Silence in the library'; |
492 |
my $title = 'Silence in the library'; |
| 480 |
$bib->append_fields( |
493 |
if (C4::Context->preference('marcflavour') eq 'UNIMARC') { |
| 481 |
MARC::Field->new('100', ' ', ' ', a => 'Moffat, Steven'), |
494 |
$bib->append_fields( |
| 482 |
MARC::Field->new('245', ' ', ' ', a => $title), |
495 |
MARC::Field->new('700', ' ', '0', a => 'Moffat, Steven'), |
| 483 |
MARC::Field->new('942', ' ', ' ', c => $itemtype), |
496 |
MARC::Field->new('200', ' ', ' ', a => $title), |
| 484 |
); |
497 |
MARC::Field->new('099', ' ', ' ', t => $itemtype), |
| 485 |
return ($bibnum, $title, $bibitemnum) = AddBiblio($bib, ''); |
498 |
); |
|
|
499 |
} else { |
| 500 |
$bib->append_fields( |
| 501 |
MARC::Field->new('100', ' ', ' ', a => 'Moffat, Steven'), |
| 502 |
MARC::Field->new('245', ' ', ' ', a => $title), |
| 503 |
MARC::Field->new('942', ' ', ' ', c => $itemtype), |
| 504 |
); |
| 505 |
} |
| 506 |
|
| 507 |
return AddBiblio($bib, ''); |
| 486 |
} |
508 |
} |
| 487 |
- |
|
|