|
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 |
- |
|
|