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

(-)a/t/db_dependent/Koha/Holds.t (-2 / +119 lines)
Lines 19-25 Link Here
19
19
20
use Modern::Perl;
20
use Modern::Perl;
21
21
22
use Test::More tests => 11;
22
use Test::More tests => 12;
23
use Test::Warn;
23
use Test::Warn;
24
24
25
use C4::Circulation qw( AddIssue );
25
use C4::Circulation qw( AddIssue );
Lines 371-376 subtest 'cancel all with reason' => sub { Link Here
371
    $message->delete;
371
    $message->delete;
372
};
372
};
373
373
374
subtest 'cancel specific hold with ModReserveCancelAll' => sub {
375
    plan tests => 9;
376
377
    my $library  = $builder->build_object( { class => 'Koha::Libraries' } );
378
    my $library2 = $builder->build_object( { class => 'Koha::Libraries' } );
379
    my $item     = $builder->build_sample_item( { library => $library->branchcode } );
380
    t::lib::Mocks::mock_userenv( { branchcode => $library->branchcode } );
381
382
    my $patron = $builder->build_object(
383
        {
384
            class => 'Koha::Patrons',
385
            value => { branchcode => $library->branchcode, }
386
        }
387
    );
388
389
    my $patron2 = $builder->build_object(
390
        {
391
            class => 'Koha::Patrons',
392
            value => { branchcode => $library2->branchcode, }
393
        }
394
    );
395
396
    my $reserve = C4::Reserves::AddReserve(
397
        {
398
            branchcode     => $library->branchcode,
399
            borrowernumber => $patron->borrowernumber,
400
            biblionumber   => $item->biblionumber,
401
            itemnumber     => $item->itemnumber,
402
            priority       => 0,
403
            found          => 'W',
404
        }
405
    );
406
407
    my $reserve2 = C4::Reserves::AddReserve(
408
        {
409
            branchcode     => $library->branchcode,
410
            borrowernumber => $patron2->borrowernumber,
411
            biblionumber   => $item->biblionumber,
412
        }
413
    );
414
415
    my $hold  = Koha::Holds->find($reserve);
416
    my $hold2 = Koha::Holds->find($reserve2);
417
418
    my $messages;
419
    my $nextreservinfo;
420
421
    # Test case where there is another hold for the same branch
422
    ( $messages, $nextreservinfo ) = ModReserveCancelAll( $item->itemnumber, $hold->borrowernumber );
423
    my $old_hold = Koha::Old::Holds->find( $hold->reserve_id );
424
    $hold = Koha::Holds->find( $hold->reserve_id );
425
426
    is( $hold, undef, 'First hold should be removed from reserves table' );
427
    isnt( $old_hold, undef, 'First hold should be moved to old_reserves table' );
428
    is( $hold2->priority, 1, 'Next reserve in line should be priority 1' );
429
    is(
430
        $nextreservinfo, $hold2->borrowernumber,
431
        'ModReserveCancelAll should return the borrowernumber for the next hold in line'
432
    );
433
    is(
434
        $messages->{'waiting'}, 1,
435
        'ModReserveCancelAll should return a waiting message if next hold is for current branch'
436
    );
437
438
    # Test case where there is another hold for a different branch
439
    $hold2->cancel;
440
    my $reserve3 = C4::Reserves::AddReserve(
441
        {
442
            branchcode     => $library->branchcode,
443
            borrowernumber => $patron->borrowernumber,
444
            biblionumber   => $item->biblionumber,
445
            itemnumber     => $item->itemnumber,
446
            priority       => 0,
447
            found          => 'W',
448
        }
449
    );
450
451
    my $reserve4 = C4::Reserves::AddReserve(
452
        {
453
            branchcode     => $library2->branchcode,
454
            borrowernumber => $patron2->borrowernumber,
455
            biblionumber   => $item->biblionumber,
456
        }
457
    );
458
459
    my $hold3 = Koha::Holds->find($reserve3);
460
    my $hold4 = Koha::Holds->find($reserve4);
461
462
    ( $messages, $nextreservinfo ) = ModReserveCancelAll( $item->itemnumber, $hold3->borrowernumber );
463
    is(
464
        $nextreservinfo, $hold4->borrowernumber,
465
        'ModReserveCancelAll should return the borrowernumber for the next hold in line'
466
    );
467
    is(
468
        $messages->{'transfert'}, $hold4->branchcode,
469
        'Next hold is for a different branch - ModReserveCancelAll should return its pickup branch in transfer message'
470
    );
471
472
    # Test case where there are no other holds
473
    $hold4->cancel;
474
    my $reserve5 = C4::Reserves::AddReserve(
475
        {
476
            branchcode     => $library->branchcode,
477
            borrowernumber => $patron->borrowernumber,
478
            biblionumber   => $item->biblionumber,
479
            itemnumber     => $item->itemnumber,
480
            priority       => 0,
481
            found          => 'W',
482
        }
483
    );
484
485
    my $hold5 = Koha::Holds->find($reserve5);
486
487
    ( $messages, $nextreservinfo ) = ModReserveCancelAll( $item->itemnumber, $hold5->borrowernumber );
488
    is( $nextreservinfo, undef, 'No more holds, nextreservinfo should not be defined' );
489
    is( $messages,       undef, 'No more holds, messages should not be defined' );
490
};
491
374
subtest 'Desks' => sub {
492
subtest 'Desks' => sub {
375
    plan tests => 5;
493
    plan tests => 5;
376
    my $library = $builder->build_object( { class => 'Koha::Libraries' } );
494
    my $library = $builder->build_object( { class => 'Koha::Libraries' } );
377
- 

Return to bug 34972