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

(-)a/t/db_dependent/Circulation/issue.t (-73 / +82 lines)
Lines 17-23 Link Here
17
17
18
use Modern::Perl;
18
use Modern::Perl;
19
19
20
use Test::More tests => 66;
20
use Test::More tests => 60;
21
use DateTime::Duration;
21
use DateTime::Duration;
22
22
23
use t::lib::Mocks;
23
use t::lib::Mocks;
Lines 417-494 C4::Circulation::AddIssue( $patron_1, $barcode_1, $daysago10, 0, $today ); Link Here
417
AddReturn($barcode_1, undef, undef, dt_from_string('2014-04-01 23:42'));
417
AddReturn($barcode_1, undef, undef, dt_from_string('2014-04-01 23:42'));
418
$return = $dbh->selectrow_hashref("SELECT * FROM old_issues LIMIT 1" );
418
$return = $dbh->selectrow_hashref("SELECT * FROM old_issues LIMIT 1" );
419
ok( $return->{returndate} eq '2014-04-01 23:42:00', "Item returned with a return date of '2014-04-01 23:42' has that return date" );
419
ok( $return->{returndate} eq '2014-04-01 23:42:00', "Item returned with a return date of '2014-04-01 23:42' has that return date" );
420
subtest 'AddIssue Update notforloanstatus according to UpdateNotForLoanStatusOnCheckin' => sub {
421
    plan tests => 7;
422
    my $itemnumber = Koha::Item->new(
423
        {
424
            biblionumber     => $biblionumber,
425
            barcode          => 'barcode_3',
426
            itemcallnumber   => 'callnumber3',
427
            homebranch       => $branchcode_1,
428
            holdingbranch    => $branchcode_1,
429
            notforloan       => 1,
430
            itype            => $itemtype,
431
            biblioitemnumber => $biblioitemnumber
432
        },
433
    )->store->itemnumber;
420
434
421
my $itemnumber = Koha::Item->new(
435
    t::lib::Mocks::mock_preference( 'UpdateNotForLoanStatusOnCheckin', q{} );
422
    {
436
    t::lib::Mocks::mock_preference( 'CataloguingLog',                  1 );
423
        biblionumber   => $biblionumber,
437
    my $log_count_before = $schema->resultset('ActionLog')->search( { module => 'CATALOGUING' } )->count();
424
        barcode        => 'barcode_3',
438
425
        itemcallnumber => 'callnumber3',
439
    AddReturn( 'barcode_3', $branchcode_1 );
426
        homebranch     => $branchcode_1,
440
    my $item = Koha::Items->find($itemnumber);
427
        holdingbranch  => $branchcode_1,
441
    ok( $item->notforloan eq 1, 'UpdateNotForLoanStatusOnCheckin does not modify value when not enabled' );
428
        notforloan     => 1,
442
429
        itype          => $itemtype,
443
    my $updatenotforloanstatusoncheckin = "
430
        biblioitemnumber => $biblioitemnumber
444
    _ALL_:\n
431
    },
445
     1: 0\n
432
)->store->itemnumber;
446
     9: 1\n\n
433
447
    $itemtype:\n
434
t::lib::Mocks::mock_preference( 'UpdateNotForLoanStatusOnCheckin', q{} );
448
      1: 9
435
t::lib::Mocks::mock_preference( 'CataloguingLog', 1 );
449
    ";
436
my $log_count_before = $schema->resultset('ActionLog')->search({module => 'CATALOGUING'})->count();
450
    t::lib::Mocks::mock_preference( 'UpdateNotForLoanStatusOnCheckin', $updatenotforloanstatusoncheckin );
437
451
    AddReturn( 'barcode_3', $branchcode_1 );
438
AddReturn( 'barcode_3', $branchcode_1 );
452
    $item = Koha::Items->find($itemnumber);
439
my $item = Koha::Items->find( $itemnumber );
453
    ok(
440
ok( $item->notforloan eq 1, 'UpdateNotForLoanStatusOnCheckin does not modify value when not enabled' );
454
        $item->notforloan eq 9,
441
455
        q{UpdateNotForLoanStatusOnCheckin prioritises item type specific rule over _ALL_ rules}
442
my $updatenotforloanstatusoncheckin = "
456
    );
443
_ALL_:\n
457
    my $log_count_after = $schema->resultset('ActionLog')->search( { module => 'CATALOGUING' } )->count();
444
 1: 0\n
458
    is( $log_count_before, $log_count_after, "Change from UpdateNotForLoanStatusOnCheckin is not logged" );
445
 9: 1\n\n
446
$itemtype:\n
447
  1: 9
448
";
449
t::lib::Mocks::mock_preference( 'UpdateNotForLoanStatusOnCheckin', $updatenotforloanstatusoncheckin );
450
AddReturn( 'barcode_3', $branchcode_1 );
451
$item = Koha::Items->find( $itemnumber );
452
ok( $item->notforloan eq 9, q{UpdateNotForLoanStatusOnCheckin prioritises item type specific rule over _ALL_ rules} );
453
my $log_count_after = $schema->resultset('ActionLog')->search({module => 'CATALOGUING'})->count();
454
is($log_count_before, $log_count_after, "Change from UpdateNotForLoanStatusOnCheckin is not logged");
455
456
AddReturn( 'barcode_3', $branchcode_1 );
457
$item = Koha::Items->find( $itemnumber );
458
ok( $item->notforloan eq 9, q{UpdateNotForLoanStatusOnCheckin uses item type specific rules even if they do not target the returned items' notforloan value} );
459
459
460
# Change the returning item to an item type without a rule
460
    AddReturn( 'barcode_3', $branchcode_1 );
461
Koha::Items->find( $itemnumber )->itype( $itemtype2 )->store;
461
    $item = Koha::Items->find($itemnumber);
462
Koha::Items->find( $itemnumber )->notforloan( 1 )->store;
462
    ok(
463
AddReturn( 'barcode_3', $branchcode_1 );
463
        $item->notforloan eq 9,
464
$item = Koha::Items->find( $itemnumber );
464
        q{UpdateNotForLoanStatusOnCheckin uses item type specific rules even if they do not target the returned items' notforloan value}
465
ok( $item->notforloan eq 0, q{UpdateNotForLoanStatusOnCheckin _ALL_ rules are applied if there are no specific item type rule matching the returned item} );
465
    );
466
466
467
t::lib::Mocks::mock_preference(
467
    # Change the returning item to an item type without a rule
468
    'UpdateNotForLoanStatusOnCheckin', q{_ALL_:
468
    Koha::Items->find($itemnumber)->itype($itemtype2)->store;
469
        1: ONLYMESSAGE
469
    Koha::Items->find($itemnumber)->notforloan(1)->store;
470
}
470
    AddReturn( 'barcode_3', $branchcode_1 );
471
);
471
    $item = Koha::Items->find($itemnumber);
472
$item->notforloan(1)->store;
472
    ok(
473
AddReturn( 'barcode_3', $branchcode_1 );
473
        $item->notforloan eq 0,
474
$item->discard_changes;
474
        q{UpdateNotForLoanStatusOnCheckin _ALL_ rules are applied if there are no specific item type rule matching the returned item}
475
is(
475
    );
476
    $item->notforloan, 1,
477
    q{UpdateNotForLoanStatusOnCheckin does not update notforloan value from 1 for _ALL_ with setting "1: ONLYMESSAGE"}
478
);
479
476
477
    t::lib::Mocks::mock_preference(
478
        'UpdateNotForLoanStatusOnCheckin', q{_ALL_:
479
            1: ONLYMESSAGE
480
    }
481
    );
482
    $item->notforloan(1)->store;
483
    AddReturn( 'barcode_3', $branchcode_1 );
484
    $item->discard_changes;
485
    is(
486
        $item->notforloan, 1,
487
        q{UpdateNotForLoanStatusOnCheckin does not update notforloan value from 1 for _ALL_ with setting "1: ONLYMESSAGE"}
488
    );
480
489
481
t::lib::Mocks::mock_preference(
490
    t::lib::Mocks::mock_preference(
482
    'UpdateNotForLoanStatusOnCheckin',  "$itemtype:\n
491
        'UpdateNotForLoanStatusOnCheckin', "$itemtype:\n
483
        1: ONLYMESSAGE
492
            1: ONLYMESSAGE
484
"
493
    "
485
);
494
    );
486
AddReturn( 'barcode_3', $branchcode_1 );
495
    AddReturn( 'barcode_3', $branchcode_1 );
487
$item->discard_changes;
496
    $item->discard_changes;
488
is(
497
    is(
489
    $item->notforloan, 1,
498
        $item->notforloan, 1,
490
    q{UpdateNotForLoanStatusOnCheckin does not update notforloan value for specific itemtype from 1 with setting "1: ONLYMESSAGE"}
499
        q{UpdateNotForLoanStatusOnCheckin does not update notforloan value for specific itemtype from 1 with setting "1: ONLYMESSAGE"}
491
);
500
    );
501
};
492
502
493
##############################################
503
##############################################
494
#
504
#
Lines 514-520 subtest 'AddReturn: Update notforloanstatus according to UpdateNotForLoanStatusO Link Here
514
524
515
    t::lib::Mocks::mock_preference( 'UpdateNotForLoanStatusOnCheckout', q{} );
525
    t::lib::Mocks::mock_preference( 'UpdateNotForLoanStatusOnCheckout', q{} );
516
    AddIssue( $patron_2, 'barcode_6', dt_from_string );
526
    AddIssue( $patron_2, 'barcode_6', dt_from_string );
517
    $item = Koha::Items->find($itemnumber4);
527
    my $item = Koha::Items->find($itemnumber4);
518
    ok( $item->notforloan eq -1, 'UpdateNotForLoanStatusOnCheckout does not modify value when not enabled' );
528
    ok( $item->notforloan eq -1, 'UpdateNotForLoanStatusOnCheckout does not modify value when not enabled' );
519
    AddReturn( 'barcode_6', $branchcode_1 );
529
    AddReturn( 'barcode_6', $branchcode_1 );
520
530
Lines 606-612 subtest '_updateNotForLoanFromYaml' => sub { Link Here
606
616
607
    t::lib::Mocks::mock_preference( 'UpdateNotForLoanStatusOnCheckout', q{} );
617
    t::lib::Mocks::mock_preference( 'UpdateNotForLoanStatusOnCheckout', q{} );
608
    t::lib::Mocks::mock_preference( 'UpdateNotForLoanStatusOnCheckin',  q{} );
618
    t::lib::Mocks::mock_preference( 'UpdateNotForLoanStatusOnCheckin',  q{} );
609
    $item = Koha::Items->find($itemnumber4);
619
    my $item = Koha::Items->find($itemnumber4);
610
    $item->notforloan(-1)->store;
620
    $item->notforloan(-1)->store;
611
    C4::Circulation::_updateNotForLoanFromYaml( $item, 'UpdateNotForLoanStatusOnCheckout' );
621
    C4::Circulation::_updateNotForLoanFromYaml( $item, 'UpdateNotForLoanStatusOnCheckout' );
612
    ok(
622
    ok(
Lines 749-760 my $item2 = Koha::Items->find( $itemnumber2 ); Link Here
749
ok( $item2->location eq 'FIC', 'UpdateItemLocationOnCheckin does not modify value when not enabled' );
759
ok( $item2->location eq 'FIC', 'UpdateItemLocationOnCheckin does not modify value when not enabled' );
750
760
751
t::lib::Mocks::mock_preference( 'UpdateItemLocationOnCheckin', 'FIC: GEN' );
761
t::lib::Mocks::mock_preference( 'UpdateItemLocationOnCheckin', 'FIC: GEN' );
752
$log_count_before = $schema->resultset('ActionLog')->search({module => 'CATALOGUING'})->count();
762
my $log_count_before = $schema->resultset('ActionLog')->search({module => 'CATALOGUING'})->count();
753
AddReturn( 'barcode_4', $branchcode_1 );
763
AddReturn( 'barcode_4', $branchcode_1 );
754
$item2 = Koha::Items->find( $itemnumber2 );
764
$item2 = Koha::Items->find( $itemnumber2 );
755
is( $item2->location, 'GEN', q{UpdateItemLocationOnCheckin updates location value from 'FIC' to 'GEN' with setting "FIC: GEN"} );
765
is( $item2->location, 'GEN', q{UpdateItemLocationOnCheckin updates location value from 'FIC' to 'GEN' with setting "FIC: GEN"} );
756
is( $item2->permanent_location, 'GEN', q{UpdateItemLocationOnCheckin updates permanent_location value from 'FIC' to 'GEN' with setting "FIC: GEN"} );
766
is( $item2->permanent_location, 'GEN', q{UpdateItemLocationOnCheckin updates permanent_location value from 'FIC' to 'GEN' with setting "FIC: GEN"} );
757
$log_count_after = $schema->resultset('ActionLog')->search({module => 'CATALOGUING'})->count();
767
my $log_count_after = $schema->resultset('ActionLog')->search({module => 'CATALOGUING'})->count();
758
is($log_count_before, $log_count_after, "Change from UpdateNotForLoanStatusOnCheckin is not logged");
768
is($log_count_before, $log_count_after, "Change from UpdateNotForLoanStatusOnCheckin is not logged");
759
AddReturn( 'barcode_4', $branchcode_1 );
769
AddReturn( 'barcode_4', $branchcode_1 );
760
$item2 = Koha::Items->find( $itemnumber2 );
770
$item2 = Koha::Items->find( $itemnumber2 );
761
- 

Return to bug 35292