Lines 7-13
use t::lib::TestBuilder;
Link Here
|
7 |
|
7 |
|
8 |
use C4::Context; |
8 |
use C4::Context; |
9 |
|
9 |
|
10 |
use Test::More tests => 58; |
10 |
use Test::More tests => 63; |
11 |
use MARC::Record; |
11 |
use MARC::Record; |
12 |
|
12 |
|
13 |
use C4::Biblio; |
13 |
use C4::Biblio; |
Lines 282-308
ok(
Link Here
|
282 |
'... unless canreservefromotherbranches is ON (bug 2394)' |
282 |
'... unless canreservefromotherbranches is ON (bug 2394)' |
283 |
); |
283 |
); |
284 |
|
284 |
|
285 |
{ |
285 |
# Regression test for bug 11336 # Test if ModReserve correctly recalculate the priorities |
286 |
# Regression test for bug 11336 # Test if ModReserve correctly recalculate the priorities |
286 |
$biblio = $builder->build_sample_biblio({ itemtype => 'DUMMY' }); |
287 |
$biblio = $builder->build_sample_biblio({ itemtype => 'DUMMY' }); |
287 |
($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $branch_1, holdingbranch => $branch_1 } , $biblio->biblionumber); |
288 |
($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $branch_1, holdingbranch => $branch_1 } , $biblio->biblionumber); |
288 |
my $reserveid1 = AddReserve($branch_1, $borrowernumbers[0], $biblio->biblionumber, '', 1); |
289 |
my $reserveid1 = AddReserve($branch_1, $borrowernumbers[0], $biblio->biblionumber, '', 1); |
289 |
($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $branch_1, holdingbranch => $branch_1 } , $biblio->biblionumber); |
290 |
($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $branch_1, holdingbranch => $branch_1 } , $biblio->biblionumber); |
290 |
my $reserveid2 = AddReserve($branch_1, $borrowernumbers[1], $biblio->biblionumber, '', 2); |
291 |
my $reserveid2 = AddReserve($branch_1, $borrowernumbers[1], $biblio->biblionumber, '', 2); |
291 |
($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $branch_1, holdingbranch => $branch_1 } , $biblio->biblionumber); |
292 |
($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $branch_1, holdingbranch => $branch_1 } , $biblio->biblionumber); |
292 |
my $reserveid3 = AddReserve($branch_1, $borrowernumbers[2], $biblio->biblionumber, '', 3); |
293 |
my $reserveid3 = AddReserve($branch_1, $borrowernumbers[2], $biblio->biblionumber, '', 3); |
293 |
my $hhh = Koha::Holds->search({ biblionumber => $biblio->biblionumber }); |
294 |
my $hhh = Koha::Holds->search({ biblionumber => $biblio->biblionumber }); |
294 |
my $hold3 = Koha::Holds->find( $reserveid3 ); |
295 |
my $hold3 = Koha::Holds->find( $reserveid3 ); |
295 |
is( $hold3->priority, 3, "The 3rd hold should have a priority set to 3" ); |
296 |
is( $hold3->priority, 3, "The 3rd hold should have a priority set to 3" ); |
296 |
ModReserve({ reserve_id => $reserveid1, rank => 'del' }); |
297 |
ModReserve({ reserve_id => $reserveid1, rank => 'del' }); |
297 |
ModReserve({ reserve_id => $reserveid2, rank => 'del' }); |
298 |
ModReserve({ reserve_id => $reserveid2, rank => 'del' }); |
298 |
is( $hold3->discard_changes->priority, 1, "After ModReserve, the 3rd reserve becomes the first on the waiting list" ); |
299 |
is( $hold3->discard_changes->priority, 1, "After ModReserve, the 3rd reserve becomes the first on the waiting list" ); |
|
|
300 |
} |
301 |
|
299 |
|
302 |
ok( defined( ( CheckReserves($itemnumber) )[1] ), "Hold can be trapped for damaged item with AllowHoldsOnDamagedItems enabled" ); |
300 |
ok( defined( ( CheckReserves($itemnumber) )[1] ), "Hold can be trapped for damaged item with AllowHoldsOnDamagedItems enabled" ); |
303 |
|
301 |
|
304 |
ModItem({ damaged => 1 }, $item_bibnum, $itemnumber); |
302 |
ModItem({ damaged => 1 }, $item_bibnum, $itemnumber); |
305 |
CancelReserve({reserve_id => $reserveid3}); |
303 |
$hold = Koha::Holds->find( $reserveid3 ); |
|
|
304 |
$hold->cancel; |
306 |
t::lib::Mocks::mock_preference( 'AllowHoldsOnDamagedItems', 1 ); |
305 |
t::lib::Mocks::mock_preference( 'AllowHoldsOnDamagedItems', 1 ); |
307 |
is( CanItemBeReserved( $borrowernumbers[0], $itemnumber)->{status}, 'OK', "Patron can reserve damaged item with AllowHoldsOnDamagedItems enabled" ); |
306 |
is( CanItemBeReserved( $borrowernumbers[0], $itemnumber)->{status}, 'OK', "Patron can reserve damaged item with AllowHoldsOnDamagedItems enabled" ); |
308 |
ok( defined( ( CheckReserves($itemnumber) )[1] ), "Hold can be trapped for damaged item with AllowHoldsOnDamagedItems enabled" ); |
307 |
ok( defined( ( CheckReserves($itemnumber) )[1] ), "Hold can be trapped for damaged item with AllowHoldsOnDamagedItems enabled" ); |
Lines 336-380
AddReserve(
Link Here
|
336 |
my ($bibnum2, $title2, $bibitemnum2) = create_helper_biblio('CANNOT'); |
335 |
my ($bibnum2, $title2, $bibitemnum2) = create_helper_biblio('CANNOT'); |
337 |
my ($item_bibnum2, $item_bibitemnum2, $itemnumber2) = AddItem({ homebranch => $branch_1, holdingbranch => $branch_1, itype => 'CANNOT' } , $bibnum2); |
336 |
my ($item_bibnum2, $item_bibitemnum2, $itemnumber2) = AddItem({ homebranch => $branch_1, holdingbranch => $branch_1, itype => 'CANNOT' } , $bibnum2); |
338 |
is( |
337 |
is( |
339 |
<<<<<<< HEAD |
338 |
CanItemBeReserved( $borrowernumbers[0], $itemnumber2)->{status}, 'tooManyReserves', |
340 |
CanItemBeReserved( $borrowernumbers[0], $itemnumber)->{status}, 'tooManyReserves', |
|
|
341 |
======= |
342 |
CanItemBeReserved( $borrowernumbers[0], $itemnumber2), 'tooManyReserves', |
343 |
>>>>>>> Bug 11999: Add two checks in CanBookBeReserved and CanItemBeReserved |
344 |
"cannot request item if policy that matches on item-level item type forbids it" |
339 |
"cannot request item if policy that matches on item-level item type forbids it" |
345 |
); |
340 |
); |
346 |
ModItem({ itype => 'CAN' }, $item_bibnum2, $itemnumber2); |
341 |
ModItem({ itype => 'CAN' }, $item_bibnum2, $itemnumber2); |
347 |
ok( |
342 |
ok( |
348 |
<<<<<<< HEAD |
343 |
CanItemBeReserved( $borrowernumbers[0], $itemnumber2)->{status} eq 'OK', |
349 |
CanItemBeReserved( $borrowernumbers[0], $itemnumber)->{status} eq 'OK', |
|
|
350 |
======= |
351 |
CanItemBeReserved( $borrowernumbers[0], $itemnumber2) eq 'OK', |
352 |
>>>>>>> Bug 11999: Add two checks in CanBookBeReserved and CanItemBeReserved |
353 |
"can request item if policy that matches on item type allows it" |
344 |
"can request item if policy that matches on item type allows it" |
354 |
); |
345 |
); |
355 |
|
346 |
|
356 |
t::lib::Mocks::mock_preference('item-level_itypes', 0); |
347 |
t::lib::Mocks::mock_preference('item-level_itypes', 0); |
357 |
<<<<<<< HEAD |
348 |
ModItem({ itype => undef }, $item_bibnum, $itemnumber2); |
358 |
ModItem({ itype => undef }, $item_bibnum, $itemnumber); |
|
|
359 |
ok( |
360 |
CanItemBeReserved( $borrowernumbers[0], $itemnumber)->{status} eq 'tooManyReserves', |
361 |
======= |
362 |
ModItem({ itype => undef }, $item_bibnum2, $itemnumber2); |
363 |
is( |
349 |
is( |
364 |
CanItemBeReserved( $borrowernumbers[0], $itemnumber2), 'tooManyReserves', |
350 |
CanItemBeReserved( $borrowernumbers[0], $itemnumber2)->{status} eq 'tooManyReserves', |
365 |
>>>>>>> Bug 11999: Add two checks in CanBookBeReserved and CanItemBeReserved |
|
|
366 |
"cannot request item if policy that matches on bib-level item type forbids it (bug 9532)" |
351 |
"cannot request item if policy that matches on bib-level item type forbids it (bug 9532)" |
367 |
); |
352 |
); |
368 |
|
353 |
|
369 |
is(CanBookBeReserved($borrowernumbers[0], $bibnum), 'OK'); |
354 |
is(CanBookBeReserved($borrowernumbers[0], $biblio->biblionumber)->{status}, 'OK'); |
370 |
|
355 |
|
371 |
C4::Context->set_preference('maxreserves', 1); |
356 |
C4::Context->set_preference('maxreserves', 1); |
372 |
is(CanBookBeReserved($borrowernumbers[0], $biblionumber), 'tooManyReserves'); |
357 |
is(CanBookBeReserved($borrowernumbers[0], $biblio->biblionumber)->{status}, 'tooManyReserves'); |
373 |
|
358 |
|
374 |
C4::Context->set_preference('maxreserves', 0); |
359 |
C4::Context->set_preference('maxreserves', 0); |
375 |
t::lib::Mocks::mock_preference('IndependentBranches', 1); |
360 |
t::lib::Mocks::mock_preference('IndependentBranches', 1); |
376 |
t::lib::Mocks::mock_preference('canreservefromotherbranches', 0); |
361 |
t::lib::Mocks::mock_preference('canreservefromotherbranches', 0); |
377 |
ok(CanBookBeReserved($borrowernumbers[0], $foreign_bibnum) eq 'none_available'); |
362 |
ok(CanBookBeReserved($borrowernumbers[0], $foreign_biblio->biblionumber)->{status} eq 'none_available'); |
378 |
|
363 |
|
379 |
# Test branch item rules |
364 |
# Test branch item rules |
380 |
|
365 |
|
Lines 438-450
is( CanItemBeReserved( $borrowernumbers[0], $itemnumber )->{status},
Link Here
|
438 |
|
423 |
|
439 |
my $res_id = AddReserve( $branch_1, $borrowernumbers[0], $biblio->biblionumber, '', 1, ); |
424 |
my $res_id = AddReserve( $branch_1, $borrowernumbers[0], $biblio->biblionumber, '', 1, ); |
440 |
|
425 |
|
441 |
<<<<<<< HEAD |
|
|
442 |
is( CanItemBeReserved( $borrowernumbers[0], $itemnumber )->{status}, |
426 |
is( CanItemBeReserved( $borrowernumbers[0], $itemnumber )->{status}, |
443 |
'tooManyReserves', 'Patron cannot reserve item with hold limit of 1, 1 bib level hold placed' ); |
|
|
444 |
======= |
445 |
is( CanItemBeReserved( $borrowernumbers[0], $itemnumber ), |
446 |
'tooManyHoldsForThisRecord', 'Patron cannot reserve item with hold limit of 1, 1 bib level hold placed' ); |
427 |
'tooManyHoldsForThisRecord', 'Patron cannot reserve item with hold limit of 1, 1 bib level hold placed' ); |
447 |
>>>>>>> Bug 11999: Add two checks in CanBookBeReserved and CanItemBeReserved |
|
|
448 |
|
428 |
|
449 |
#results should be the same for both ReservesControlBranch settings |
429 |
#results should be the same for both ReservesControlBranch settings |
450 |
t::lib::Mocks::mock_preference( 'ReservesControlBranch', 'ItemHomeLibrary' ); |
430 |
t::lib::Mocks::mock_preference( 'ReservesControlBranch', 'ItemHomeLibrary' ); |
Lines 453-459
is( CanItemBeReserved( $borrowernumbers[0], $itemnumber )->{status},
Link Here
|
453 |
#reset for further tests |
433 |
#reset for further tests |
454 |
t::lib::Mocks::mock_preference( 'ReservesControlBranch', 'PatronLibrary' ); |
434 |
t::lib::Mocks::mock_preference( 'ReservesControlBranch', 'PatronLibrary' ); |
455 |
|
435 |
|
456 |
<<<<<<< HEAD |
|
|
457 |
subtest 'Test max_holds per library/patron category' => sub { |
436 |
subtest 'Test max_holds per library/patron category' => sub { |
458 |
plan tests => 6; |
437 |
plan tests => 6; |
459 |
|
438 |
|
Lines 704-710
subtest 'CanItemBeReserved / holds_per_day tests' => sub {
Link Here
|
704 |
|
683 |
|
705 |
$schema->storage->txn_rollback; |
684 |
$schema->storage->txn_rollback; |
706 |
}; |
685 |
}; |
707 |
======= |
686 |
|
708 |
# Helper method to set up a Biblio. |
687 |
# Helper method to set up a Biblio. |
709 |
sub create_helper_biblio { |
688 |
sub create_helper_biblio { |
710 |
my $itemtype = shift; |
689 |
my $itemtype = shift; |
Lines 726-729
sub create_helper_biblio {
Link Here
|
726 |
|
705 |
|
727 |
return AddBiblio($bib, ''); |
706 |
return AddBiblio($bib, ''); |
728 |
} |
707 |
} |
729 |
>>>>>>> Bug 11999: Add two checks in CanBookBeReserved and CanItemBeReserved |
|
|
730 |
- |