View | Details | Raw Unified | Return to bug 23404
Collapse All | Expand All

(-)a/t/db_dependent/Circulation/TooMany.t (-43 / +43 lines)
Lines 81-86 my $item = $builder->build({ Link Here
81
});
81
});
82
82
83
my $patron_object = Koha::Patrons->find( $patron->{borrowernumber} );
83
my $patron_object = Koha::Patrons->find( $patron->{borrowernumber} );
84
my $item_object = Koha::Items->find( $item->{itemnumber} );
84
t::lib::Mocks::mock_userenv( { patron => $patron_object });
85
t::lib::Mocks::mock_userenv( { patron => $patron_object });
85
86
86
# TooMany return ($current_loan_count, $max_loans_allowed) or undef
87
# TooMany return ($current_loan_count, $max_loans_allowed) or undef
Lines 90-101 t::lib::Mocks::mock_userenv( { patron => $patron_object }); Link Here
90
subtest 'no rules exist' => sub {
91
subtest 'no rules exist' => sub {
91
    plan tests => 2;
92
    plan tests => 2;
92
    is_deeply(
93
    is_deeply(
93
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item ),
94
        C4::Circulation::TooMany( $patron, $item_object ),
94
        { reason => 'NO_RULE_DEFINED', max_allowed => 0 },
95
        { reason => 'NO_RULE_DEFINED', max_allowed => 0 },
95
        'CO should not be allowed, in any cases'
96
        'CO should not be allowed, in any cases'
96
    );
97
    );
97
    is_deeply(
98
    is_deeply(
98
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item, { onsite_checkout => 1 } ),
99
        C4::Circulation::TooMany( $patron, $item_object, { onsite_checkout => 1 } ),
99
        { reason => 'NO_RULE_DEFINED', max_allowed => 0 },
100
        { reason => 'NO_RULE_DEFINED', max_allowed => 0 },
100
        'OSCO should not be allowed, in any cases'
101
        'OSCO should not be allowed, in any cases'
101
    );
102
    );
Lines 116-122 subtest '1 Issuingrule exist 0 0: no issue allowed' => sub { Link Here
116
    );
117
    );
117
    t::lib::Mocks::mock_preference('ConsiderOnSiteCheckoutsAsNormalCheckouts', 0);
118
    t::lib::Mocks::mock_preference('ConsiderOnSiteCheckoutsAsNormalCheckouts', 0);
118
    is_deeply(
119
    is_deeply(
119
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item ),
120
        C4::Circulation::TooMany( $patron, $item_object ),
120
        {
121
        {
121
            reason => 'TOO_MANY_CHECKOUTS',
122
            reason => 'TOO_MANY_CHECKOUTS',
122
            count => 0,
123
            count => 0,
Lines 125-131 subtest '1 Issuingrule exist 0 0: no issue allowed' => sub { Link Here
125
        'CO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 0'
126
        'CO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 0'
126
    );
127
    );
127
    is_deeply(
128
    is_deeply(
128
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item, { onsite_checkout => 1 } ),
129
        C4::Circulation::TooMany( $patron, $item_object, { onsite_checkout => 1 } ),
129
        {
130
        {
130
            reason => 'TOO_MANY_ONSITE_CHECKOUTS',
131
            reason => 'TOO_MANY_ONSITE_CHECKOUTS',
131
            count => 0,
132
            count => 0,
Lines 136-142 subtest '1 Issuingrule exist 0 0: no issue allowed' => sub { Link Here
136
137
137
    t::lib::Mocks::mock_preference('ConsiderOnSiteCheckoutsAsNormalCheckouts', 1);
138
    t::lib::Mocks::mock_preference('ConsiderOnSiteCheckoutsAsNormalCheckouts', 1);
138
    is_deeply(
139
    is_deeply(
139
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item ),
140
        C4::Circulation::TooMany( $patron, $item_object ),
140
        {
141
        {
141
            reason => 'TOO_MANY_CHECKOUTS',
142
            reason => 'TOO_MANY_CHECKOUTS',
142
            count => 0,
143
            count => 0,
Lines 145-151 subtest '1 Issuingrule exist 0 0: no issue allowed' => sub { Link Here
145
        'CO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 1'
146
        'CO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 1'
146
    );
147
    );
147
    is_deeply(
148
    is_deeply(
148
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item, { onsite_checkout => 1 } ),
149
        C4::Circulation::TooMany( $patron, $item_object, { onsite_checkout => 1 } ),
149
        {
150
        {
150
            reason => 'TOO_MANY_ONSITE_CHECKOUTS',
151
            reason => 'TOO_MANY_ONSITE_CHECKOUTS',
151
            count => 0,
152
            count => 0,
Lines 175-181 subtest '1 Issuingrule exist with onsiteissueqty=unlimited' => sub { Link Here
175
    my $issue = C4::Circulation::AddIssue( $patron, $item->{barcode}, dt_from_string() );
176
    my $issue = C4::Circulation::AddIssue( $patron, $item->{barcode}, dt_from_string() );
176
    t::lib::Mocks::mock_preference('ConsiderOnSiteCheckoutsAsNormalCheckouts', 0);
177
    t::lib::Mocks::mock_preference('ConsiderOnSiteCheckoutsAsNormalCheckouts', 0);
177
    is_deeply(
178
    is_deeply(
178
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item ),
179
        C4::Circulation::TooMany( $patron, $item_object ),
179
        {
180
        {
180
            reason => 'TOO_MANY_CHECKOUTS',
181
            reason => 'TOO_MANY_CHECKOUTS',
181
            count => 1,
182
            count => 1,
Lines 184-197 subtest '1 Issuingrule exist with onsiteissueqty=unlimited' => sub { Link Here
184
        'CO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 0'
185
        'CO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 0'
185
    );
186
    );
186
    is(
187
    is(
187
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item, { onsite_checkout => 1 } ),
188
        C4::Circulation::TooMany( $patron, $item_object, { onsite_checkout => 1 } ),
188
        undef,
189
        undef,
189
        'OSCO should be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 0'
190
        'OSCO should be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 0'
190
    );
191
    );
191
192
192
    t::lib::Mocks::mock_preference('ConsiderOnSiteCheckoutsAsNormalCheckouts', 1);
193
    t::lib::Mocks::mock_preference('ConsiderOnSiteCheckoutsAsNormalCheckouts', 1);
193
    is_deeply(
194
    is_deeply(
194
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item ),
195
        C4::Circulation::TooMany( $patron, $item_object ),
195
        {
196
        {
196
            reason => 'TOO_MANY_CHECKOUTS',
197
            reason => 'TOO_MANY_CHECKOUTS',
197
            count => 1,
198
            count => 1,
Lines 200-206 subtest '1 Issuingrule exist with onsiteissueqty=unlimited' => sub { Link Here
200
        'CO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 1'
201
        'CO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 1'
201
    );
202
    );
202
    is_deeply(
203
    is_deeply(
203
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item, { onsite_checkout => 1 } ),
204
        C4::Circulation::TooMany( $patron, $item_object, { onsite_checkout => 1 } ),
204
        {
205
        {
205
            reason => 'TOO_MANY_CHECKOUTS',
206
            reason => 'TOO_MANY_CHECKOUTS',
206
            count => 1,
207
            count => 1,
Lines 228-251 subtest '1 Issuingrule exist 1 1: issue is allowed' => sub { Link Here
228
    );
229
    );
229
    t::lib::Mocks::mock_preference('ConsiderOnSiteCheckoutsAsNormalCheckouts', 0);
230
    t::lib::Mocks::mock_preference('ConsiderOnSiteCheckoutsAsNormalCheckouts', 0);
230
    is(
231
    is(
231
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item ),
232
        C4::Circulation::TooMany( $patron, $item_object ),
232
        undef,
233
        undef,
233
        'CO should be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 0'
234
        'CO should be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 0'
234
    );
235
    );
235
    is(
236
    is(
236
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item, { onsite_checkout => 1 } ),
237
        C4::Circulation::TooMany( $patron, $item_object, { onsite_checkout => 1 } ),
237
        undef,
238
        undef,
238
        'OSCO should be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 0'
239
        'OSCO should be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 0'
239
    );
240
    );
240
241
241
    t::lib::Mocks::mock_preference('ConsiderOnSiteCheckoutsAsNormalCheckouts', 1);
242
    t::lib::Mocks::mock_preference('ConsiderOnSiteCheckoutsAsNormalCheckouts', 1);
242
    is(
243
    is(
243
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item ),
244
        C4::Circulation::TooMany( $patron, $item_object ),
244
        undef,
245
        undef,
245
        'CO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 1'
246
        'CO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 1'
246
    );
247
    );
247
    is(
248
    is(
248
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item, { onsite_checkout => 1 } ),
249
        C4::Circulation::TooMany( $patron, $item_object, { onsite_checkout => 1 } ),
249
        undef,
250
        undef,
250
        'OSCO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 1'
251
        'OSCO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 1'
251
    );
252
    );
Lines 272-278 subtest '1 Issuingrule exist: 1 CO allowed, 1 OSCO allowed. Do a CO' => sub { Link Here
272
273
273
    t::lib::Mocks::mock_preference('ConsiderOnSiteCheckoutsAsNormalCheckouts', 0);
274
    t::lib::Mocks::mock_preference('ConsiderOnSiteCheckoutsAsNormalCheckouts', 0);
274
    is_deeply(
275
    is_deeply(
275
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item ),
276
        C4::Circulation::TooMany( $patron, $item_object ),
276
        {
277
        {
277
            reason => 'TOO_MANY_CHECKOUTS',
278
            reason => 'TOO_MANY_CHECKOUTS',
278
            count => 1,
279
            count => 1,
Lines 281-294 subtest '1 Issuingrule exist: 1 CO allowed, 1 OSCO allowed. Do a CO' => sub { Link Here
281
        'CO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 0'
282
        'CO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 0'
282
    );
283
    );
283
    is(
284
    is(
284
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item, { onsite_checkout => 1 } ),
285
        C4::Circulation::TooMany( $patron, $item_object, { onsite_checkout => 1 } ),
285
        undef,
286
        undef,
286
        'OSCO should be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 0'
287
        'OSCO should be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 0'
287
    );
288
    );
288
289
289
    t::lib::Mocks::mock_preference('ConsiderOnSiteCheckoutsAsNormalCheckouts', 1);
290
    t::lib::Mocks::mock_preference('ConsiderOnSiteCheckoutsAsNormalCheckouts', 1);
290
    is_deeply(
291
    is_deeply(
291
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item ),
292
        C4::Circulation::TooMany( $patron, $item_object ),
292
        {
293
        {
293
            reason => 'TOO_MANY_CHECKOUTS',
294
            reason => 'TOO_MANY_CHECKOUTS',
294
            count => 1,
295
            count => 1,
Lines 297-303 subtest '1 Issuingrule exist: 1 CO allowed, 1 OSCO allowed. Do a CO' => sub { Link Here
297
        'CO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 1'
298
        'CO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 1'
298
    );
299
    );
299
    is_deeply(
300
    is_deeply(
300
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item, { onsite_checkout => 1 } ),
301
        C4::Circulation::TooMany( $patron, $item_object, { onsite_checkout => 1 } ),
301
        {
302
        {
302
            reason => 'TOO_MANY_CHECKOUTS',
303
            reason => 'TOO_MANY_CHECKOUTS',
303
            count => 1,
304
            count => 1,
Lines 328-339 subtest '1 Issuingrule exist: 1 CO allowed, 1 OSCO allowed, Do a OSCO' => sub { Link Here
328
329
329
    t::lib::Mocks::mock_preference('ConsiderOnSiteCheckoutsAsNormalCheckouts', 0);
330
    t::lib::Mocks::mock_preference('ConsiderOnSiteCheckoutsAsNormalCheckouts', 0);
330
    is(
331
    is(
331
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item ),
332
        C4::Circulation::TooMany( $patron, $item_object ),
332
        undef,
333
        undef,
333
        'CO should be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 0'
334
        'CO should be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 0'
334
    );
335
    );
335
    is_deeply(
336
    is_deeply(
336
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item, { onsite_checkout => 1 } ),
337
        C4::Circulation::TooMany( $patron, $item_object, { onsite_checkout => 1 } ),
337
        {
338
        {
338
            reason => 'TOO_MANY_ONSITE_CHECKOUTS',
339
            reason => 'TOO_MANY_ONSITE_CHECKOUTS',
339
            count => 1,
340
            count => 1,
Lines 344-350 subtest '1 Issuingrule exist: 1 CO allowed, 1 OSCO allowed, Do a OSCO' => sub { Link Here
344
345
345
    t::lib::Mocks::mock_preference('ConsiderOnSiteCheckoutsAsNormalCheckouts', 1);
346
    t::lib::Mocks::mock_preference('ConsiderOnSiteCheckoutsAsNormalCheckouts', 1);
346
    is_deeply(
347
    is_deeply(
347
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item ),
348
        C4::Circulation::TooMany( $patron, $item_object ),
348
        {
349
        {
349
            reason => 'TOO_MANY_CHECKOUTS',
350
            reason => 'TOO_MANY_CHECKOUTS',
350
            count => 1,
351
            count => 1,
Lines 353-359 subtest '1 Issuingrule exist: 1 CO allowed, 1 OSCO allowed, Do a OSCO' => sub { Link Here
353
        'CO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 1'
354
        'CO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 1'
354
    );
355
    );
355
    is_deeply(
356
    is_deeply(
356
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item, { onsite_checkout => 1 } ),
357
        C4::Circulation::TooMany( $patron, $item_object, { onsite_checkout => 1 } ),
357
        {
358
        {
358
            reason => 'TOO_MANY_ONSITE_CHECKOUTS',
359
            reason => 'TOO_MANY_ONSITE_CHECKOUTS',
359
            count => 1,
360
            count => 1,
Lines 387-393 subtest '1 BranchBorrowerCircRule exist: 1 CO allowed, 1 OSCO allowed' => sub { Link Here
387
388
388
    t::lib::Mocks::mock_preference('ConsiderOnSiteCheckoutsAsNormalCheckouts', 0);
389
    t::lib::Mocks::mock_preference('ConsiderOnSiteCheckoutsAsNormalCheckouts', 0);
389
    is_deeply(
390
    is_deeply(
390
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item ),
391
        C4::Circulation::TooMany( $patron, $item_object ),
391
        {
392
        {
392
            reason => 'TOO_MANY_CHECKOUTS',
393
            reason => 'TOO_MANY_CHECKOUTS',
393
            count => 1,
394
            count => 1,
Lines 396-409 subtest '1 BranchBorrowerCircRule exist: 1 CO allowed, 1 OSCO allowed' => sub { Link Here
396
        'CO should be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 0'
397
        'CO should be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 0'
397
    );
398
    );
398
    is(
399
    is(
399
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item, { onsite_checkout => 1 } ),
400
        C4::Circulation::TooMany( $patron, $item_object, { onsite_checkout => 1 } ),
400
        undef,
401
        undef,
401
        'OSCO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 0'
402
        'OSCO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 0'
402
    );
403
    );
403
404
404
    t::lib::Mocks::mock_preference('ConsiderOnSiteCheckoutsAsNormalCheckouts', 1);
405
    t::lib::Mocks::mock_preference('ConsiderOnSiteCheckoutsAsNormalCheckouts', 1);
405
    is_deeply(
406
    is_deeply(
406
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item ),
407
        C4::Circulation::TooMany( $patron, $item_object ),
407
        {
408
        {
408
            reason => 'TOO_MANY_CHECKOUTS',
409
            reason => 'TOO_MANY_CHECKOUTS',
409
            count => 1,
410
            count => 1,
Lines 412-418 subtest '1 BranchBorrowerCircRule exist: 1 CO allowed, 1 OSCO allowed' => sub { Link Here
412
        'CO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 1'
413
        'CO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 1'
413
    );
414
    );
414
    is_deeply(
415
    is_deeply(
415
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item, { onsite_checkout => 1 } ),
416
        C4::Circulation::TooMany( $patron, $item_object, { onsite_checkout => 1 } ),
416
        {
417
        {
417
            reason => 'TOO_MANY_CHECKOUTS',
418
            reason => 'TOO_MANY_CHECKOUTS',
418
            count => 1,
419
            count => 1,
Lines 428-439 subtest '1 BranchBorrowerCircRule exist: 1 CO allowed, 1 OSCO allowed' => sub { Link Here
428
429
429
    t::lib::Mocks::mock_preference('ConsiderOnSiteCheckoutsAsNormalCheckouts', 0);
430
    t::lib::Mocks::mock_preference('ConsiderOnSiteCheckoutsAsNormalCheckouts', 0);
430
    is(
431
    is(
431
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item ),
432
        C4::Circulation::TooMany( $patron, $item_object ),
432
        undef,
433
        undef,
433
        'CO should be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 0'
434
        'CO should be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 0'
434
    );
435
    );
435
    is_deeply(
436
    is_deeply(
436
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item, { onsite_checkout => 1 } ),
437
        C4::Circulation::TooMany( $patron, $item_object, { onsite_checkout => 1 } ),
437
        {
438
        {
438
            reason => 'TOO_MANY_ONSITE_CHECKOUTS',
439
            reason => 'TOO_MANY_ONSITE_CHECKOUTS',
439
            count => 1,
440
            count => 1,
Lines 444-450 subtest '1 BranchBorrowerCircRule exist: 1 CO allowed, 1 OSCO allowed' => sub { Link Here
444
445
445
    t::lib::Mocks::mock_preference('ConsiderOnSiteCheckoutsAsNormalCheckouts', 1);
446
    t::lib::Mocks::mock_preference('ConsiderOnSiteCheckoutsAsNormalCheckouts', 1);
446
    is_deeply(
447
    is_deeply(
447
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item ),
448
        C4::Circulation::TooMany( $patron, $item_object ),
448
        {
449
        {
449
            reason => 'TOO_MANY_CHECKOUTS',
450
            reason => 'TOO_MANY_CHECKOUTS',
450
            count => 1,
451
            count => 1,
Lines 453-459 subtest '1 BranchBorrowerCircRule exist: 1 CO allowed, 1 OSCO allowed' => sub { Link Here
453
        'CO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 1'
454
        'CO should not be allowed if ConsiderOnSiteCheckoutsAsNormalCheckouts == 1'
454
    );
455
    );
455
    is_deeply(
456
    is_deeply(
456
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item, { onsite_checkout => 1 } ),
457
        C4::Circulation::TooMany( $patron, $item_object, { onsite_checkout => 1 } ),
457
        {
458
        {
458
            reason => 'TOO_MANY_ONSITE_CHECKOUTS',
459
            reason => 'TOO_MANY_ONSITE_CHECKOUTS',
459
            count => 1,
460
            count => 1,
Lines 530-536 subtest 'General vs specific rules limit quantity correctly' => sub { Link Here
530
    my $issue = C4::Circulation::AddIssue( $patron, $issue_item->barcode, dt_from_string() );
531
    my $issue = C4::Circulation::AddIssue( $patron, $issue_item->barcode, dt_from_string() );
531
    # We checkout one item
532
    # We checkout one item
532
    is_deeply(
533
    is_deeply(
533
        C4::Circulation::TooMany( $patron, $branch_item->biblionumber, $branch_item->unblessed ),
534
        C4::Circulation::TooMany( $patron, $branch_item ),
534
        {
535
        {
535
            reason => 'TOO_MANY_CHECKOUTS',
536
            reason => 'TOO_MANY_CHECKOUTS',
536
            count => 1,
537
            count => 1,
Lines 545-551 subtest 'General vs specific rules limit quantity correctly' => sub { Link Here
545
    $branch_item->biblio->biblioitem->itemtype($itemtype->{itemtype})->store;
546
    $branch_item->biblio->biblioitem->itemtype($itemtype->{itemtype})->store;
546
    # We checkout one item
547
    # We checkout one item
547
    is_deeply(
548
    is_deeply(
548
        C4::Circulation::TooMany( $patron, $branch_item->biblionumber, $branch_item->unblessed ),
549
        C4::Circulation::TooMany( $patron, $branch_item ),
549
        {
550
        {
550
            reason => 'TOO_MANY_CHECKOUTS',
551
            reason => 'TOO_MANY_CHECKOUTS',
551
            count => 1,
552
            count => 1,
Lines 569-575 subtest 'General vs specific rules limit quantity correctly' => sub { Link Here
569
    );
570
    );
570
571
571
    is(
572
    is(
572
        C4::Circulation::TooMany( $patron, $branch_item->biblionumber, $branch_item->unblessed ),
573
        C4::Circulation::TooMany( $patron, $branch_item ),
573
        undef,
574
        undef,
574
        'We are allowed one from the branch specifically now'
575
        'We are allowed one from the branch specifically now'
575
    );
576
    );
Lines 577-583 subtest 'General vs specific rules limit quantity correctly' => sub { Link Here
577
    # If circcontrol is PatronLibrary we count all the patron's loan, regardless of branch
578
    # If circcontrol is PatronLibrary we count all the patron's loan, regardless of branch
578
    t::lib::Mocks::mock_preference('CircControl', 'PatronLibrary');
579
    t::lib::Mocks::mock_preference('CircControl', 'PatronLibrary');
579
    is_deeply(
580
    is_deeply(
580
        C4::Circulation::TooMany( $patron, $branch_item->biblionumber, $branch_item->unblessed ),
581
        C4::Circulation::TooMany( $patron, $branch_item ),
581
        {
582
        {
582
            reason => 'TOO_MANY_CHECKOUTS',
583
            reason => 'TOO_MANY_CHECKOUTS',
583
            count => 1,
584
            count => 1,
Lines 596-602 subtest 'General vs specific rules limit quantity correctly' => sub { Link Here
596
        holdingbranch => $branch->{branchcode}
597
        holdingbranch => $branch->{branchcode}
597
    });
598
    });
598
    is_deeply(
599
    is_deeply(
599
        C4::Circulation::TooMany( $patron, $branch_item_2->biblionumber, $branch_item_2->unblessed ),
600
        C4::Circulation::TooMany( $patron, $branch_item_2 ),
600
        {
601
        {
601
            reason => 'TOO_MANY_CHECKOUTS',
602
            reason => 'TOO_MANY_CHECKOUTS',
602
            count => 1,
603
            count => 1,
Lines 610-616 subtest 'General vs specific rules limit quantity correctly' => sub { Link Here
610
        itype => $itemtype->{itemtype},
611
        itype => $itemtype->{itemtype},
611
    });
612
    });
612
    is_deeply(
613
    is_deeply(
613
        C4::Circulation::TooMany( $patron, $item_2->biblionumber, $item_2->unblessed ),
614
        C4::Circulation::TooMany( $patron, $item_2 ),
614
        {
615
        {
615
            reason => 'TOO_MANY_CHECKOUTS',
616
            reason => 'TOO_MANY_CHECKOUTS',
616
            count => 2,
617
            count => 2,
Lines 620-626 subtest 'General vs specific rules limit quantity correctly' => sub { Link Here
620
    );
621
    );
621
    t::lib::Mocks::mock_preference('CircControl', 'PatronLibrary');
622
    t::lib::Mocks::mock_preference('CircControl', 'PatronLibrary');
622
    is_deeply(
623
    is_deeply(
623
        C4::Circulation::TooMany( $patron, $item_2->biblionumber, $item_2->unblessed ),
624
        C4::Circulation::TooMany( $patron, $item_2 ),
624
        {
625
        {
625
            reason => 'TOO_MANY_CHECKOUTS',
626
            reason => 'TOO_MANY_CHECKOUTS',
626
            count => 2,
627
            count => 2,
Lines 631-637 subtest 'General vs specific rules limit quantity correctly' => sub { Link Here
631
632
632
    t::lib::Mocks::mock_preference('CircControl', 'PickupLibrary');
633
    t::lib::Mocks::mock_preference('CircControl', 'PickupLibrary');
633
    is_deeply(
634
    is_deeply(
634
        C4::Circulation::TooMany( $patron, $item_2->biblionumber, $item_2->unblessed ),
635
        C4::Circulation::TooMany( $patron, $item_2 ),
635
        {
636
        {
636
            reason => 'TOO_MANY_CHECKOUTS',
637
            reason => 'TOO_MANY_CHECKOUTS',
637
            count => 2,
638
            count => 2,
Lines 643-649 subtest 'General vs specific rules limit quantity correctly' => sub { Link Here
643
    my $branch2   = $builder->build({source => 'Branch',});
644
    my $branch2   = $builder->build({source => 'Branch',});
644
    t::lib::Mocks::mock_userenv({ branchcode => $branch2->{branchcode} });
645
    t::lib::Mocks::mock_userenv({ branchcode => $branch2->{branchcode} });
645
    is_deeply(
646
    is_deeply(
646
        C4::Circulation::TooMany( $patron, $item_2->biblionumber, $item_2->unblessed ),
647
        C4::Circulation::TooMany( $patron, $item_2 ),
647
        {
648
        {
648
            reason => 'TOO_MANY_CHECKOUTS',
649
            reason => 'TOO_MANY_CHECKOUTS',
649
            count => 2,
650
            count => 2,
Lines 665-671 subtest 'General vs specific rules limit quantity correctly' => sub { Link Here
665
    );
666
    );
666
667
667
    is(
668
    is(
668
        C4::Circulation::TooMany( $patron, $branch_item->biblionumber, $branch_item->unblessed ),
669
        C4::Circulation::TooMany( $patron, $branch_item ),
669
        undef,
670
        undef,
670
        'We are allowed one from the branch specifically now'
671
        'We are allowed one from the branch specifically now'
671
    );
672
    );
Lines 686-698 subtest 'empty string means unlimited' => sub { Link Here
686
        },
687
        },
687
    );
688
    );
688
    is(
689
    is(
689
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item ),
690
        C4::Circulation::TooMany( $patron, $item_object ),
690
        undef,
691
        undef,
691
        'maxissueqty="" should mean unlimited'
692
        'maxissueqty="" should mean unlimited'
692
    );
693
    );
693
694
694
    is(
695
    is(
695
        C4::Circulation::TooMany( $patron, $biblio->{biblionumber}, $item, { onsite_checkout => 1 } ),
696
        C4::Circulation::TooMany( $patron, $item_object, { onsite_checkout => 1 } ),
696
        undef,
697
        undef,
697
        'maxonsiteissueqty="" should mean unlimited'
698
        'maxonsiteissueqty="" should mean unlimited'
698
    );
699
    );
699
- 

Return to bug 23404