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 => 29; |
9 |
use Test::More tests => 40; |
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 49-56
foreach (1..$borrowers_count) {
Link Here
|
49 |
|
49 |
|
50 |
my $biblionumber = $bibnum; |
50 |
my $biblionumber = $bibnum; |
51 |
|
51 |
|
52 |
my @branches = GetBranchesLoop(); |
52 |
my $branches = GetBranchesLoop(); |
53 |
my $branch = $branches[0][0]{value}; |
53 |
my $branch = $branches->[0]{value}; |
54 |
|
54 |
|
55 |
# Create five item level holds |
55 |
# Create five item level holds |
56 |
foreach my $borrowernumber ( @borrowernumbers ) { |
56 |
foreach my $borrowernumber ( @borrowernumbers ) { |
Lines 194-218
t::lib::Mocks::mock_preference('item-level_itypes', 1);
Link Here
|
194 |
|
194 |
|
195 |
# if IndependentBranches is OFF, a CPL patron can reserve an MPL item |
195 |
# if IndependentBranches is OFF, a CPL patron can reserve an MPL item |
196 |
t::lib::Mocks::mock_preference('IndependentBranches', 0); |
196 |
t::lib::Mocks::mock_preference('IndependentBranches', 0); |
|
|
197 |
my ($canitembereserved, $reasons) = CanItemBeReserved($borrowernumbers[0], $foreign_itemnumber); |
197 |
ok( |
198 |
ok( |
198 |
CanItemBeReserved($borrowernumbers[0], $foreign_itemnumber), |
199 |
$canitembereserved, |
199 |
'CPL patron allowed to reserve MPL item with IndependentBranches OFF (bug 2394)' |
200 |
'CPL patron allowed to reserve MPL item with IndependentBranches OFF (bug 2394)' |
200 |
); |
201 |
); |
|
|
202 |
is($reasons, undef); |
201 |
|
203 |
|
202 |
# if IndependentBranches is OFF, a CPL patron cannot reserve an MPL item |
204 |
# if IndependentBranches is OFF, a CPL patron cannot reserve an MPL item |
203 |
t::lib::Mocks::mock_preference('IndependentBranches', 1); |
205 |
t::lib::Mocks::mock_preference('IndependentBranches', 1); |
204 |
t::lib::Mocks::mock_preference('canreservefromotherbranches', 0); |
206 |
t::lib::Mocks::mock_preference('canreservefromotherbranches', 0); |
|
|
207 |
($canitembereserved, $reasons) = CanItemBeReserved($borrowernumbers[0], $foreign_itemnumber); |
205 |
ok( |
208 |
ok( |
206 |
! CanItemBeReserved($borrowernumbers[0], $foreign_itemnumber), |
209 |
! $canitembereserved, |
207 |
'CPL patron NOT allowed to reserve MPL item with IndependentBranches ON ... (bug 2394)' |
210 |
'CPL patron NOT allowed to reserve MPL item with IndependentBranches ON ... (bug 2394)' |
208 |
); |
211 |
); |
|
|
212 |
ok($reasons->{wrongbranch}); |
209 |
|
213 |
|
210 |
# ... unless canreservefromotherbranches is ON |
214 |
# ... unless canreservefromotherbranches is ON |
211 |
t::lib::Mocks::mock_preference('canreservefromotherbranches', 1); |
215 |
t::lib::Mocks::mock_preference('canreservefromotherbranches', 1); |
|
|
216 |
($canitembereserved, $reasons) = CanItemBeReserved($borrowernumbers[0], $foreign_itemnumber); |
212 |
ok( |
217 |
ok( |
213 |
CanItemBeReserved($borrowernumbers[0], $foreign_itemnumber), |
218 |
$canitembereserved, |
214 |
'... unless canreservefromotherbranches is ON (bug 2394)' |
219 |
'... unless canreservefromotherbranches is ON (bug 2394)' |
215 |
); |
220 |
); |
|
|
221 |
is($reasons, undef); |
216 |
|
222 |
|
217 |
# Regression test for bug 11336 |
223 |
# Regression test for bug 11336 |
218 |
($bibnum, $title, $bibitemnum) = create_helper_biblio(); |
224 |
($bibnum, $title, $bibitemnum) = create_helper_biblio(); |
Lines 278-299
ModReserve({ reserve_id => $reserveid2, rank => 'del' });
Link Here
|
278 |
$reserve3 = GetReserve( $reserveid3 ); |
284 |
$reserve3 = GetReserve( $reserveid3 ); |
279 |
is( $reserve3->{priority}, 1, "After ModReserve, the 3rd reserve becomes the first on the waiting list" ); |
285 |
is( $reserve3->{priority}, 1, "After ModReserve, the 3rd reserve becomes the first on the waiting list" ); |
280 |
|
286 |
|
281 |
ModItem({ damaged => 1 }, $item_bibnum, $itemnumber); |
|
|
282 |
C4::Context->set_preference( 'AllowHoldsOnDamagedItems', 1 ); |
287 |
C4::Context->set_preference( 'AllowHoldsOnDamagedItems', 1 ); |
283 |
ok( CanItemBeReserved( $borrowernumbers[0], $itemnumber), "Patron can reserve damaged item with AllowHoldsOnDamagedItems enabled" ); |
|
|
284 |
ok( defined( ( CheckReserves($itemnumber) )[1] ), "Hold can be trapped for damaged item with AllowHoldsOnDamagedItems enabled" ); |
288 |
ok( defined( ( CheckReserves($itemnumber) )[1] ), "Hold can be trapped for damaged item with AllowHoldsOnDamagedItems enabled" ); |
|
|
289 |
|
290 |
CancelReserve({reserve_id => $reserveid3}); |
291 |
ModItem({ damaged => 1 }, $item_bibnum, $itemnumber); |
292 |
($canitembereserved, $reasons) = CanItemBeReserved($borrowernumbers[0], $itemnumber); |
293 |
ok( $canitembereserved, "Patron can reserve damaged item with AllowHoldsOnDamagedItems enabled" ); |
294 |
is($reasons, undef); |
295 |
|
285 |
C4::Context->set_preference( 'AllowHoldsOnDamagedItems', 0 ); |
296 |
C4::Context->set_preference( 'AllowHoldsOnDamagedItems', 0 ); |
286 |
ok( !CanItemBeReserved( $borrowernumbers[0], $itemnumber), "Patron cannot reserve damaged item with AllowHoldsOnDamagedItems disabled" ); |
297 |
($canitembereserved, $reasons) = CanItemBeReserved($borrowernumbers[0], $itemnumber); |
|
|
298 |
ok( !$canitembereserved, "Patron cannot reserve damaged item with AllowHoldsOnDamagedItems disabled" ); |
299 |
ok($reasons->{damaged}); |
287 |
ok( !defined( ( CheckReserves($itemnumber) )[1] ), "Hold cannot be trapped for damaged item with AllowHoldsOnDamagedItems disabled" ); |
300 |
ok( !defined( ( CheckReserves($itemnumber) )[1] ), "Hold cannot be trapped for damaged item with AllowHoldsOnDamagedItems disabled" ); |
288 |
|
301 |
|
|
|
302 |
AddReserve( |
303 |
$branch, |
304 |
$borrowernumbers[0], |
305 |
$biblionumber, |
306 |
'a', |
307 |
'', |
308 |
1, |
309 |
); |
310 |
|
311 |
my $canbookbereserved; |
312 |
($canbookbereserved, $reasons) = CanBookBeReserved($borrowernumbers[0], $biblionumber); |
313 |
ok(!$canbookbereserved); |
314 |
ok($reasons->{alreadyreserved}); |
315 |
|
316 |
C4::Context->set_preference('maxreserves', 1); |
317 |
($canbookbereserved, $reasons) = CanBookBeReserved($borrowernumbers[0], $bibnum); |
318 |
ok(!$canbookbereserved); |
319 |
ok($reasons->{maxreserves}); |
320 |
|
321 |
C4::Context->set_preference('maxreserves', 0); |
322 |
t::lib::Mocks::mock_preference('IndependentBranches', 1); |
323 |
t::lib::Mocks::mock_preference('canreservefromotherbranches', 0); |
324 |
($canbookbereserved, $reasons) = CanBookBeReserved($borrowernumbers[0], $foreign_bibnum); |
325 |
ok(!$canbookbereserved); |
326 |
ok($reasons->{noholdableitems}); |
327 |
|
289 |
|
328 |
|
290 |
# Helper method to set up a Biblio. |
329 |
# Helper method to set up a Biblio. |
291 |
sub create_helper_biblio { |
330 |
sub create_helper_biblio { |
292 |
my $bib = MARC::Record->new(); |
331 |
my $bib = MARC::Record->new(); |
293 |
my $title = 'Silence in the library'; |
332 |
my $title = 'Silence in the library'; |
294 |
$bib->append_fields( |
333 |
if (C4::Context->preference('marcflavour') eq 'UNIMARC') { |
295 |
MARC::Field->new('100', ' ', ' ', a => 'Moffat, Steven'), |
334 |
$bib->append_fields( |
296 |
MARC::Field->new('245', ' ', ' ', a => $title), |
335 |
MARC::Field->new('600', '', '1', a => 'Moffat, Steven'), |
297 |
); |
336 |
MARC::Field->new('200', '', '', a => $title), |
|
|
337 |
); |
338 |
} else { |
339 |
$bib->append_fields( |
340 |
MARC::Field->new('100', ' ', ' ', a => 'Moffat, Steven'), |
341 |
MARC::Field->new('245', ' ', ' ', a => $title), |
342 |
); |
343 |
} |
298 |
return ($bibnum, $title, $bibitemnum) = AddBiblio($bib, ''); |
344 |
return ($bibnum, $title, $bibitemnum) = AddBiblio($bib, ''); |
299 |
} |
345 |
} |
300 |
- |
|
|