Lines 6-12
use t::lib::Mocks;
Link Here
|
6 |
use C4::Context; |
6 |
use C4::Context; |
7 |
use C4::Branch; |
7 |
use C4::Branch; |
8 |
|
8 |
|
9 |
use Test::More tests => 32; |
9 |
use Test::More tests => 43; |
10 |
use MARC::Record; |
10 |
use MARC::Record; |
11 |
use C4::Biblio; |
11 |
use C4::Biblio; |
12 |
use C4::Items; |
12 |
use C4::Items; |
Lines 54-61
foreach (1..$borrowers_count) {
Link Here
|
54 |
|
54 |
|
55 |
my $biblionumber = $bibnum; |
55 |
my $biblionumber = $bibnum; |
56 |
|
56 |
|
57 |
my @branches = GetBranchesLoop(); |
57 |
my $branches = GetBranchesLoop(); |
58 |
my $branch = $branches[0][0]{value}; |
58 |
my $branch = $branches->[0]{value}; |
59 |
|
59 |
|
60 |
# Create five item level holds |
60 |
# Create five item level holds |
61 |
foreach my $borrowernumber ( @borrowernumbers ) { |
61 |
foreach my $borrowernumber ( @borrowernumbers ) { |
Lines 205-229
t::lib::Mocks::mock_preference('item-level_itypes', 1);
Link Here
|
205 |
|
205 |
|
206 |
# if IndependentBranches is OFF, a CPL patron can reserve an MPL item |
206 |
# if IndependentBranches is OFF, a CPL patron can reserve an MPL item |
207 |
t::lib::Mocks::mock_preference('IndependentBranches', 0); |
207 |
t::lib::Mocks::mock_preference('IndependentBranches', 0); |
|
|
208 |
my ($canitembereserved, $reasons) = CanItemBeReserved($borrowernumbers[0], $foreign_itemnumber); |
208 |
ok( |
209 |
ok( |
209 |
CanItemBeReserved($borrowernumbers[0], $foreign_itemnumber), |
210 |
$canitembereserved, |
210 |
'CPL patron allowed to reserve MPL item with IndependentBranches OFF (bug 2394)' |
211 |
'CPL patron allowed to reserve MPL item with IndependentBranches OFF (bug 2394)' |
211 |
); |
212 |
); |
|
|
213 |
is($reasons, undef); |
212 |
|
214 |
|
213 |
# if IndependentBranches is OFF, a CPL patron cannot reserve an MPL item |
215 |
# if IndependentBranches is OFF, a CPL patron cannot reserve an MPL item |
214 |
t::lib::Mocks::mock_preference('IndependentBranches', 1); |
216 |
t::lib::Mocks::mock_preference('IndependentBranches', 1); |
215 |
t::lib::Mocks::mock_preference('canreservefromotherbranches', 0); |
217 |
t::lib::Mocks::mock_preference('canreservefromotherbranches', 0); |
|
|
218 |
($canitembereserved, $reasons) = CanItemBeReserved($borrowernumbers[0], $foreign_itemnumber); |
216 |
ok( |
219 |
ok( |
217 |
! CanItemBeReserved($borrowernumbers[0], $foreign_itemnumber), |
220 |
! $canitembereserved, |
218 |
'CPL patron NOT allowed to reserve MPL item with IndependentBranches ON ... (bug 2394)' |
221 |
'CPL patron NOT allowed to reserve MPL item with IndependentBranches ON ... (bug 2394)' |
219 |
); |
222 |
); |
|
|
223 |
ok($reasons->{wrongbranch}); |
220 |
|
224 |
|
221 |
# ... unless canreservefromotherbranches is ON |
225 |
# ... unless canreservefromotherbranches is ON |
222 |
t::lib::Mocks::mock_preference('canreservefromotherbranches', 1); |
226 |
t::lib::Mocks::mock_preference('canreservefromotherbranches', 1); |
|
|
227 |
($canitembereserved, $reasons) = CanItemBeReserved($borrowernumbers[0], $foreign_itemnumber); |
223 |
ok( |
228 |
ok( |
224 |
CanItemBeReserved($borrowernumbers[0], $foreign_itemnumber), |
229 |
$canitembereserved, |
225 |
'... unless canreservefromotherbranches is ON (bug 2394)' |
230 |
'... unless canreservefromotherbranches is ON (bug 2394)' |
226 |
); |
231 |
); |
|
|
232 |
is($reasons, undef); |
227 |
|
233 |
|
228 |
# Regression test for bug 11336 |
234 |
# Regression test for bug 11336 |
229 |
($bibnum, $title, $bibitemnum) = create_helper_biblio(); |
235 |
($bibnum, $title, $bibitemnum) = create_helper_biblio(); |
Lines 288-304
ModReserve({ reserve_id => $reserveid2, rank => 'del' });
Link Here
|
288 |
$reserve3 = GetReserve( $reserveid3 ); |
294 |
$reserve3 = GetReserve( $reserveid3 ); |
289 |
is( $reserve3->{priority}, 1, "After ModReserve, the 3rd reserve becomes the first on the waiting list" ); |
295 |
is( $reserve3->{priority}, 1, "After ModReserve, the 3rd reserve becomes the first on the waiting list" ); |
290 |
|
296 |
|
291 |
ModItem({ damaged => 1 }, $item_bibnum, $itemnumber); |
|
|
292 |
C4::Context->set_preference( 'AllowHoldsOnDamagedItems', 1 ); |
297 |
C4::Context->set_preference( 'AllowHoldsOnDamagedItems', 1 ); |
293 |
ok( CanItemBeReserved( $borrowernumbers[0], $itemnumber), "Patron can reserve damaged item with AllowHoldsOnDamagedItems enabled" ); |
|
|
294 |
ok( defined( ( CheckReserves($itemnumber) )[1] ), "Hold can be trapped for damaged item with AllowHoldsOnDamagedItems enabled" ); |
298 |
ok( defined( ( CheckReserves($itemnumber) )[1] ), "Hold can be trapped for damaged item with AllowHoldsOnDamagedItems enabled" ); |
|
|
299 |
|
300 |
CancelReserve({reserve_id => $reserveid3}); |
301 |
ModItem({ damaged => 1 }, $item_bibnum, $itemnumber); |
302 |
($canitembereserved, $reasons) = CanItemBeReserved($borrowernumbers[0], $itemnumber); |
303 |
ok( $canitembereserved, "Patron can reserve damaged item with AllowHoldsOnDamagedItems enabled" ); |
304 |
is($reasons, undef); |
305 |
|
295 |
C4::Context->set_preference( 'AllowHoldsOnDamagedItems', 0 ); |
306 |
C4::Context->set_preference( 'AllowHoldsOnDamagedItems', 0 ); |
296 |
ok( !CanItemBeReserved( $borrowernumbers[0], $itemnumber), "Patron cannot reserve damaged item with AllowHoldsOnDamagedItems disabled" ); |
307 |
($canitembereserved, $reasons) = CanItemBeReserved($borrowernumbers[0], $itemnumber); |
|
|
308 |
ok( !$canitembereserved, "Patron cannot reserve damaged item with AllowHoldsOnDamagedItems disabled" ); |
309 |
ok($reasons->{damaged}); |
297 |
ok( !defined( ( CheckReserves($itemnumber) )[1] ), "Hold cannot be trapped for damaged item with AllowHoldsOnDamagedItems disabled" ); |
310 |
ok( !defined( ( CheckReserves($itemnumber) )[1] ), "Hold cannot be trapped for damaged item with AllowHoldsOnDamagedItems disabled" ); |
298 |
|
311 |
|
299 |
# Regression test for bug 9532 |
312 |
# Regression test for bug 9532 |
300 |
($bibnum, $title, $bibitemnum) = create_helper_biblio('CANNOT'); |
313 |
($bibnum, $title, $bibitemnum) = create_helper_biblio('CANNOT'); |
301 |
($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => 'CPL', holdingbranch => 'CPL', itype => 'CANNOT' } , $bibnum); |
314 |
($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => 'CPL', holdingbranch => 'CPL', itype => 'CANNOT' } , $bibnum); |
|
|
315 |
($canitembereserved) = CanItemBeReserved( $borrowernumbers[0], $itemnumber); |
316 |
ok( |
317 |
!$canitembereserved, |
318 |
"cannot request item if policy that matches on item-level item type forbids it" |
319 |
); |
320 |
ModItem({ itype => 'CAN' }, $item_bibnum, $itemnumber); |
321 |
($canitembereserved, $reasons) = CanItemBeReserved( $borrowernumbers[0], $itemnumber); |
322 |
ok( |
323 |
$canitembereserved, |
324 |
"can request item if policy that matches on item type allows it" |
325 |
); |
326 |
|
302 |
AddReserve( |
327 |
AddReserve( |
303 |
$branch, |
328 |
$branch, |
304 |
$borrowernumbers[0], |
329 |
$borrowernumbers[0], |
Lines 307-338
AddReserve(
Link Here
|
307 |
'', |
332 |
'', |
308 |
1, |
333 |
1, |
309 |
); |
334 |
); |
310 |
ok( |
|
|
311 |
!CanItemBeReserved( $borrowernumbers[0], $itemnumber), |
312 |
"cannot request item if policy that matches on item-level item type forbids it" |
313 |
); |
314 |
ModItem({ itype => 'CAN' }, $item_bibnum, $itemnumber); |
315 |
ok( |
316 |
CanItemBeReserved( $borrowernumbers[0], $itemnumber), |
317 |
"can request item if policy that matches on item type allows it" |
318 |
); |
319 |
|
335 |
|
320 |
t::lib::Mocks::mock_preference('item-level_itypes', 0); |
336 |
t::lib::Mocks::mock_preference('item-level_itypes', 0); |
321 |
ModItem({ itype => undef }, $item_bibnum, $itemnumber); |
337 |
ModItem({ itype => undef }, $item_bibnum, $itemnumber); |
|
|
338 |
($canitembereserved) = CanItemBeReserved( $borrowernumbers[0], $itemnumber); |
322 |
ok( |
339 |
ok( |
323 |
!CanItemBeReserved( $borrowernumbers[0], $itemnumber), |
340 |
!$canitembereserved, |
324 |
"cannot request item if policy that matches on bib-level item type forbids it (bug 9532)" |
341 |
"cannot request item if policy that matches on bib-level item type forbids it (bug 9532)" |
325 |
); |
342 |
); |
326 |
|
343 |
|
|
|
344 |
my $canbookbereserved; |
345 |
($canbookbereserved, $reasons) = CanBookBeReserved($borrowernumbers[0], $bibnum); |
346 |
ok(!$canbookbereserved); |
347 |
ok($reasons->{alreadyreserved}); |
348 |
|
349 |
C4::Context->set_preference('maxreserves', 1); |
350 |
($canbookbereserved, $reasons) = CanBookBeReserved($borrowernumbers[0], $biblionumber); |
351 |
ok(!$canbookbereserved); |
352 |
ok($reasons->{maxreserves}); |
353 |
|
354 |
C4::Context->set_preference('maxreserves', 0); |
355 |
t::lib::Mocks::mock_preference('IndependentBranches', 1); |
356 |
t::lib::Mocks::mock_preference('canreservefromotherbranches', 0); |
357 |
($canbookbereserved, $reasons) = CanBookBeReserved($borrowernumbers[0], $foreign_bibnum); |
358 |
ok(!$canbookbereserved); |
359 |
ok($reasons->{noholdableitems}); |
360 |
|
361 |
|
327 |
# Helper method to set up a Biblio. |
362 |
# Helper method to set up a Biblio. |
328 |
sub create_helper_biblio { |
363 |
sub create_helper_biblio { |
329 |
my $itemtype = shift; |
364 |
my $itemtype = shift; |
330 |
my $bib = MARC::Record->new(); |
365 |
my $bib = MARC::Record->new(); |
331 |
my $title = 'Silence in the library'; |
366 |
my $title = 'Silence in the library'; |
332 |
$bib->append_fields( |
367 |
if (C4::Context->preference('marcflavour') eq 'UNIMARC') { |
333 |
MARC::Field->new('100', ' ', ' ', a => 'Moffat, Steven'), |
368 |
$bib->append_fields( |
334 |
MARC::Field->new('245', ' ', ' ', a => $title), |
369 |
MARC::Field->new('600', '', '1', a => 'Moffat, Steven'), |
335 |
MARC::Field->new('942', ' ', ' ', c => $itemtype), |
370 |
MARC::Field->new('200', '', '', a => $title), |
336 |
); |
371 |
MARC::Field->new('099', '', '', t => $itemtype), |
|
|
372 |
); |
373 |
} else { |
374 |
$bib->append_fields( |
375 |
MARC::Field->new('100', ' ', ' ', a => 'Moffat, Steven'), |
376 |
MARC::Field->new('245', ' ', ' ', a => $title), |
377 |
MARC::Field->new('942', ' ', ' ', c => $itemtype), |
378 |
); |
379 |
} |
337 |
return ($bibnum, $title, $bibitemnum) = AddBiblio($bib, ''); |
380 |
return ($bibnum, $title, $bibitemnum) = AddBiblio($bib, ''); |
338 |
} |
381 |
} |
339 |
- |
|
|