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

(-)a/t/db_dependent/Circulation/issue.t (-79 / +82 lines)
Lines 17-24 Link Here
17
17
18
use Modern::Perl;
18
use Modern::Perl;
19
19
20
use Test::NoWarnings;
20
use Test::More tests => 60;
21
use Test::More tests => 67;
22
use DateTime::Duration;
21
use DateTime::Duration;
23
22
24
use t::lib::Mocks;
23
use t::lib::Mocks;
Lines 435-517 ok( Link Here
435
    $return->{returndate} eq '2014-04-01 23:42:00',
434
    $return->{returndate} eq '2014-04-01 23:42:00',
436
    "Item returned with a return date of '2014-04-01 23:42' has that return date"
435
    "Item returned with a return date of '2014-04-01 23:42' has that return date"
437
);
436
);
437
subtest 'AddIssue Update notforloanstatus according to UpdateNotForLoanStatusOnCheckin' => sub {
438
    plan tests => 7;
439
    my $itemnumber = Koha::Item->new(
440
        {
441
            biblionumber     => $biblionumber,
442
            barcode          => 'barcode_3',
443
            itemcallnumber   => 'callnumber3',
444
            homebranch       => $branchcode_1,
445
            holdingbranch    => $branchcode_1,
446
            notforloan       => 1,
447
            itype            => $itemtype,
448
            biblioitemnumber => $biblioitemnumber
449
        },
450
    )->store->itemnumber;
438
451
439
my $itemnumber = Koha::Item->new(
452
    t::lib::Mocks::mock_preference( 'UpdateNotForLoanStatusOnCheckin', q{} );
440
    {
453
    t::lib::Mocks::mock_preference( 'CataloguingLog',                  1 );
441
        biblionumber     => $biblionumber,
454
    my $log_count_before = $schema->resultset('ActionLog')->search( { module => 'CATALOGUING' } )->count();
442
        barcode          => 'barcode_3',
455
443
        itemcallnumber   => 'callnumber3',
456
    AddReturn( 'barcode_3', $branchcode_1 );
444
        homebranch       => $branchcode_1,
457
    my $item = Koha::Items->find($itemnumber);
445
        holdingbranch    => $branchcode_1,
458
    ok( $item->notforloan eq 1, 'UpdateNotForLoanStatusOnCheckin does not modify value when not enabled' );
446
        notforloan       => 1,
459
447
        itype            => $itemtype,
460
    my $updatenotforloanstatusoncheckin = "
448
        biblioitemnumber => $biblioitemnumber
461
    _ALL_:\n
449
    },
462
     1: 0\n
450
)->store->itemnumber;
463
     9: 1\n\n
451
464
    $itemtype:\n
452
t::lib::Mocks::mock_preference( 'UpdateNotForLoanStatusOnCheckin', q{} );
465
      1: 9
453
t::lib::Mocks::mock_preference( 'CataloguingLog',                  1 );
466
    ";
454
my $log_count_before = $schema->resultset('ActionLog')->search( { module => 'CATALOGUING' } )->count();
467
    t::lib::Mocks::mock_preference( 'UpdateNotForLoanStatusOnCheckin', $updatenotforloanstatusoncheckin );
455
468
    AddReturn( 'barcode_3', $branchcode_1 );
456
AddReturn( 'barcode_3', $branchcode_1 );
469
    $item = Koha::Items->find($itemnumber);
457
my $item = Koha::Items->find($itemnumber);
470
    ok(
458
ok( $item->notforloan eq 1, 'UpdateNotForLoanStatusOnCheckin does not modify value when not enabled' );
471
        $item->notforloan eq 9,
459
472
        q{UpdateNotForLoanStatusOnCheckin prioritises item type specific rule over _ALL_ rules}
460
my $updatenotforloanstatusoncheckin = "
473
    );
461
_ALL_:\n
474
    my $log_count_after = $schema->resultset('ActionLog')->search( { module => 'CATALOGUING' } )->count();
462
 1: 0\n
475
    is( $log_count_before, $log_count_after, "Change from UpdateNotForLoanStatusOnCheckin is not logged" );
463
 9: 1\n\n
464
$itemtype:\n
465
  1: 9
466
";
467
t::lib::Mocks::mock_preference( 'UpdateNotForLoanStatusOnCheckin', $updatenotforloanstatusoncheckin );
468
AddReturn( 'barcode_3', $branchcode_1 );
469
$item = Koha::Items->find($itemnumber);
470
ok( $item->notforloan eq 9, q{UpdateNotForLoanStatusOnCheckin prioritises item type specific rule over _ALL_ rules} );
471
my $log_count_after = $schema->resultset('ActionLog')->search( { module => 'CATALOGUING' } )->count();
472
is( $log_count_before, $log_count_after, "Change from UpdateNotForLoanStatusOnCheckin is not logged" );
473
476
474
AddReturn( 'barcode_3', $branchcode_1 );
477
    AddReturn( 'barcode_3', $branchcode_1 );
475
$item = Koha::Items->find($itemnumber);
478
    $item = Koha::Items->find($itemnumber);
476
ok(
479
    ok(
477
    $item->notforloan eq 9,
480
        $item->notforloan eq 9,
478
    q{UpdateNotForLoanStatusOnCheckin uses item type specific rules even if they do not target the returned items' notforloan value}
481
        q{UpdateNotForLoanStatusOnCheckin uses item type specific rules even if they do not target the returned items' notforloan value}
479
);
482
    );
480
483
481
# Change the returning item to an item type without a rule
484
    # Change the returning item to an item type without a rule
482
Koha::Items->find($itemnumber)->itype($itemtype2)->store;
485
    Koha::Items->find($itemnumber)->itype($itemtype2)->store;
483
Koha::Items->find($itemnumber)->notforloan(1)->store;
486
    Koha::Items->find($itemnumber)->notforloan(1)->store;
484
AddReturn( 'barcode_3', $branchcode_1 );
487
    AddReturn( 'barcode_3', $branchcode_1 );
485
$item = Koha::Items->find($itemnumber);
488
    $item = Koha::Items->find($itemnumber);
486
ok(
489
    ok(
487
    $item->notforloan eq 0,
490
        $item->notforloan eq 0,
488
    q{UpdateNotForLoanStatusOnCheckin _ALL_ rules are applied if there are no specific item type rule matching the returned item}
491
        q{UpdateNotForLoanStatusOnCheckin _ALL_ rules are applied if there are no specific item type rule matching the returned item}
489
);
492
    );
490
493
491
t::lib::Mocks::mock_preference(
494
    t::lib::Mocks::mock_preference(
492
    'UpdateNotForLoanStatusOnCheckin', q{_ALL_:
495
        'UpdateNotForLoanStatusOnCheckin', q{_ALL_:
493
        1: ONLYMESSAGE
496
            1: ONLYMESSAGE
494
}
497
    }
495
);
498
    );
496
$item->notforloan(1)->store;
499
    $item->notforloan(1)->store;
497
AddReturn( 'barcode_3', $branchcode_1 );
500
    AddReturn( 'barcode_3', $branchcode_1 );
498
$item->discard_changes;
501
    $item->discard_changes;
499
is(
502
    is(
500
    $item->notforloan, 1,
503
        $item->notforloan, 1,
501
    q{UpdateNotForLoanStatusOnCheckin does not update notforloan value from 1 for _ALL_ with setting "1: ONLYMESSAGE"}
504
        q{UpdateNotForLoanStatusOnCheckin does not update notforloan value from 1 for _ALL_ with setting "1: ONLYMESSAGE"}
502
);
505
    );
503
506
504
t::lib::Mocks::mock_preference(
507
    t::lib::Mocks::mock_preference(
505
    'UpdateNotForLoanStatusOnCheckin', "$itemtype:\n
508
        'UpdateNotForLoanStatusOnCheckin', "$itemtype:\n
506
        1: ONLYMESSAGE
509
            1: ONLYMESSAGE
507
"
510
    "
508
);
511
    );
509
AddReturn( 'barcode_3', $branchcode_1 );
512
    AddReturn( 'barcode_3', $branchcode_1 );
510
$item->discard_changes;
513
    $item->discard_changes;
511
is(
514
    is(
512
    $item->notforloan, 1,
515
        $item->notforloan, 1,
513
    q{UpdateNotForLoanStatusOnCheckin does not update notforloan value for specific itemtype from 1 with setting "1: ONLYMESSAGE"}
516
        q{UpdateNotForLoanStatusOnCheckin does not update notforloan value for specific itemtype from 1 with setting "1: ONLYMESSAGE"}
514
);
517
    );
518
};
515
519
516
##############################################
520
##############################################
517
#
521
#
Lines 537-543 subtest 'AddReturn: Update notforloanstatus according to UpdateNotForLoanStatusO Link Here
537
541
538
    t::lib::Mocks::mock_preference( 'UpdateNotForLoanStatusOnCheckout', q{} );
542
    t::lib::Mocks::mock_preference( 'UpdateNotForLoanStatusOnCheckout', q{} );
539
    AddIssue( $patron_2, 'barcode_6', dt_from_string );
543
    AddIssue( $patron_2, 'barcode_6', dt_from_string );
540
    $item = Koha::Items->find($itemnumber4);
544
    my $item = Koha::Items->find($itemnumber4);
541
    ok( $item->notforloan eq -1, 'UpdateNotForLoanStatusOnCheckout does not modify value when not enabled' );
545
    ok( $item->notforloan eq -1, 'UpdateNotForLoanStatusOnCheckout does not modify value when not enabled' );
542
    AddReturn( 'barcode_6', $branchcode_1 );
546
    AddReturn( 'barcode_6', $branchcode_1 );
543
547
Lines 629-635 subtest '_updateNotForLoanFromYaml' => sub { Link Here
629
633
630
    t::lib::Mocks::mock_preference( 'UpdateNotForLoanStatusOnCheckout', q{} );
634
    t::lib::Mocks::mock_preference( 'UpdateNotForLoanStatusOnCheckout', q{} );
631
    t::lib::Mocks::mock_preference( 'UpdateNotForLoanStatusOnCheckin',  q{} );
635
    t::lib::Mocks::mock_preference( 'UpdateNotForLoanStatusOnCheckin',  q{} );
632
    $item = Koha::Items->find($itemnumber4);
636
    my $item = Koha::Items->find($itemnumber4);
633
    $item->notforloan(-1)->store;
637
    $item->notforloan(-1)->store;
634
    C4::Circulation::_updateNotForLoanFromYaml( $item, 'UpdateNotForLoanStatusOnCheckout' );
638
    C4::Circulation::_updateNotForLoanFromYaml( $item, 'UpdateNotForLoanStatusOnCheckout' );
635
    ok(
639
    ok(
Lines 772-778 my $item2 = Koha::Items->find($itemnumber2); Link Here
772
ok( $item2->location eq 'FIC', 'UpdateItemLocationOnCheckin does not modify value when not enabled' );
776
ok( $item2->location eq 'FIC', 'UpdateItemLocationOnCheckin does not modify value when not enabled' );
773
777
774
t::lib::Mocks::mock_preference( 'UpdateItemLocationOnCheckin', 'FIC: GEN' );
778
t::lib::Mocks::mock_preference( 'UpdateItemLocationOnCheckin', 'FIC: GEN' );
775
$log_count_before = $schema->resultset('ActionLog')->search( { module => 'CATALOGUING' } )->count();
779
my $log_count_before = $schema->resultset('ActionLog')->search( { module => 'CATALOGUING' } )->count();
776
AddReturn( 'barcode_4', $branchcode_1 );
780
AddReturn( 'barcode_4', $branchcode_1 );
777
$item2 = Koha::Items->find($itemnumber2);
781
$item2 = Koha::Items->find($itemnumber2);
778
is(
782
is(
Lines 783-789 is( Link Here
783
    $item2->permanent_location, 'GEN',
787
    $item2->permanent_location, 'GEN',
784
    q{UpdateItemLocationOnCheckin updates permanent_location value from 'FIC' to 'GEN' with setting "FIC: GEN"}
788
    q{UpdateItemLocationOnCheckin updates permanent_location value from 'FIC' to 'GEN' with setting "FIC: GEN"}
785
);
789
);
786
$log_count_after = $schema->resultset('ActionLog')->search( { module => 'CATALOGUING' } )->count();
790
my $log_count_after = $schema->resultset('ActionLog')->search( { module => 'CATALOGUING' } )->count();
787
is( $log_count_before, $log_count_after, "Change from UpdateNotForLoanStatusOnCheckin is not logged" );
791
is( $log_count_before, $log_count_after, "Change from UpdateNotForLoanStatusOnCheckin is not logged" );
788
AddReturn( 'barcode_4', $branchcode_1 );
792
AddReturn( 'barcode_4', $branchcode_1 );
789
$item2 = Koha::Items->find($itemnumber2);
793
$item2 = Koha::Items->find($itemnumber2);
790
- 

Return to bug 35292