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