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 => 71; |
10 |
use Test::More tests => 67; |
11 |
use MARC::Record; |
11 |
use MARC::Record; |
12 |
|
12 |
|
13 |
use C4::Biblio; |
13 |
use C4::Biblio; |
Lines 325-350
ok(
Link Here
|
325 |
is( $hold3->discard_changes->priority, 1, "After ModReserve, the 3rd reserve becomes the first on the waiting list" ); |
325 |
is( $hold3->discard_changes->priority, 1, "After ModReserve, the 3rd reserve becomes the first on the waiting list" ); |
326 |
} |
326 |
} |
327 |
|
327 |
|
328 |
Koha::Items->find($itemnumber)->damaged(1)->store; # FIXME The $itemnumber is a bit confusing here |
328 |
subtest 'AllowHoldsOnDamagedItems' => sub { |
329 |
t::lib::Mocks::mock_preference( 'AllowHoldsOnDamagedItems', 1 ); |
329 |
plan tests => 5; |
330 |
is( CanItemBeReserved( $borrowernumbers[0], $itemnumber)->{status}, 'OK', "Patron can reserve damaged item with AllowHoldsOnDamagedItems enabled" ); |
|
|
331 |
ok( defined( ( CheckReserves($itemnumber) )[1] ), "Hold can be trapped for damaged item with AllowHoldsOnDamagedItems enabled" ); |
332 |
|
330 |
|
333 |
$hold = Koha::Hold->new( |
331 |
my $library = $builder->build_object( { class => 'Koha::Libraries' } ); |
334 |
{ |
332 |
my $biblio = $builder->build_sample_biblio; |
335 |
borrowernumber => $borrowernumbers[0], |
333 |
my $patron = $builder->build_object( { class => 'Koha::Patrons' } ); |
336 |
itemnumber => $itemnumber, |
334 |
my $reserveid1 = AddReserve( |
337 |
biblionumber => $biblio->biblionumber, |
335 |
{ |
338 |
} |
336 |
branchcode => $library->branchcode, |
339 |
)->store(); |
337 |
borrowernumber => $patron->borrowernumber, |
340 |
is( CanItemBeReserved( $borrowernumbers[0], $itemnumber )->{status}, |
338 |
biblionumber => $biblio->biblionumber, |
341 |
'itemAlreadyOnHold', |
339 |
priority => 1 |
342 |
"Patron cannot place a second item level hold for a given item" ); |
340 |
} |
343 |
$hold->delete(); |
341 |
); |
344 |
|
342 |
|
345 |
t::lib::Mocks::mock_preference( 'AllowHoldsOnDamagedItems', 0 ); |
343 |
my $itemnumber = $builder->build_sample_item( |
346 |
ok( CanItemBeReserved( $borrowernumbers[0], $itemnumber)->{status} eq 'damaged', "Patron cannot reserve damaged item with AllowHoldsOnDamagedItems disabled" ); |
344 |
{ |
347 |
ok( !defined( ( CheckReserves($itemnumber) )[1] ), "Hold cannot be trapped for damaged item with AllowHoldsOnDamagedItems disabled" ); |
345 |
library => $library->branchcode, |
|
|
346 |
biblionumber => $biblio->biblionumber, |
347 |
damaged => 1 |
348 |
} |
349 |
)->itemnumber; |
350 |
t::lib::Mocks::mock_preference( 'AllowHoldsOnDamagedItems', 1 ); |
351 |
is( |
352 |
CanItemBeReserved( $patron->borrowernumber, $itemnumber )->{status}, |
353 |
'OK', |
354 |
"Patron can reserve damaged item with AllowHoldsOnDamagedItems enabled" |
355 |
); |
356 |
ok( |
357 |
defined( ( CheckReserves($itemnumber) )[1] ), "Hold can be trapped for damaged item with AllowHoldsOnDamagedItems enabled" |
358 |
); |
359 |
|
360 |
$hold = Koha::Hold->new( |
361 |
{ |
362 |
borrowernumber => $patron->borrowernumber, |
363 |
itemnumber => $itemnumber, |
364 |
biblionumber => $biblio->biblionumber, |
365 |
} |
366 |
)->store(); |
367 |
is( |
368 |
CanItemBeReserved( $patron->borrowernumber, $itemnumber )->{status}, |
369 |
'itemAlreadyOnHold', |
370 |
"Patron cannot place a second item level hold for a given item" |
371 |
); |
372 |
$hold->delete(); |
373 |
|
374 |
t::lib::Mocks::mock_preference( 'AllowHoldsOnDamagedItems', 0 ); |
375 |
is( |
376 |
CanItemBeReserved( $patron->borrowernumber, $itemnumber )->{status}, |
377 |
'damaged', |
378 |
"Patron cannot reserve damaged item with AllowHoldsOnDamagedItems disabled" |
379 |
); |
380 |
ok( |
381 |
!defined( ( CheckReserves($itemnumber) )[1] ), "Hold cannot be trapped for damaged item with AllowHoldsOnDamagedItems disabled" |
382 |
); |
383 |
|
384 |
}; |
348 |
|
385 |
|
349 |
# Items that are not for loan, but holdable should not be trapped until they are available for loan |
386 |
# Items that are not for loan, but holdable should not be trapped until they are available for loan |
350 |
t::lib::Mocks::mock_preference( 'TrapHoldsOnOrder', 0 ); |
387 |
t::lib::Mocks::mock_preference( 'TrapHoldsOnOrder', 0 ); |
351 |
- |
|
|