Lines 18-24
Link Here
|
18 |
use Modern::Perl; |
18 |
use Modern::Perl; |
19 |
|
19 |
|
20 |
use Test::NoWarnings; |
20 |
use Test::NoWarnings; |
21 |
use Test::More tests => 66; |
21 |
use Test::More tests => 67; |
22 |
use DateTime::Duration; |
22 |
use DateTime::Duration; |
23 |
|
23 |
|
24 |
use t::lib::Mocks; |
24 |
use t::lib::Mocks; |
Lines 606-611
subtest 'AddReturn: Update notforloanstatus according to UpdateNotForLoanStatusO
Link Here
|
606 |
# |
606 |
# |
607 |
########################################## |
607 |
########################################## |
608 |
|
608 |
|
|
|
609 |
########################################## |
610 |
# |
611 |
# _updateNotForLoanFromYaml |
612 |
# |
613 |
########################################## |
614 |
|
615 |
subtest '_updateNotForLoanFromYaml' => sub { |
616 |
plan tests => 10; |
617 |
my $itemnumber4 = Koha::Item->new( |
618 |
{ |
619 |
biblionumber => $biblionumber, |
620 |
barcode => 'barcode_6', |
621 |
itemcallnumber => 'callnumber6', |
622 |
homebranch => $branchcode_1, |
623 |
holdingbranch => $branchcode_1, |
624 |
notforloan => -1, |
625 |
itype => $itemtype, |
626 |
location => 'loc1' |
627 |
}, |
628 |
)->store->itemnumber; |
629 |
|
630 |
t::lib::Mocks::mock_preference( 'UpdateNotForLoanStatusOnCheckout', q{} ); |
631 |
t::lib::Mocks::mock_preference( 'UpdateNotForLoanStatusOnCheckin', q{} ); |
632 |
$item = Koha::Items->find($itemnumber4); |
633 |
$item->notforloan(-1)->store; |
634 |
C4::Circulation::_updateNotForLoanFromYaml( $item, 'UpdateNotForLoanStatusOnCheckout' ); |
635 |
ok( |
636 |
$item->notforloan eq -1, |
637 |
'_updateNotForLoanFromYaml: UpdateNotForLoanStatusOnCheckout does not modify value when not enabled' |
638 |
); |
639 |
C4::Circulation::_updateNotForLoanFromYaml( $item, 'UpdateNotForLoanStatusOnCheckin' ); |
640 |
ok( |
641 |
$item->notforloan eq -1, |
642 |
'_updateNotForLoanFromYaml: UpdateNotForLoanStatusOnCheckin does not modify value when not enabled' |
643 |
); |
644 |
|
645 |
t::lib::Mocks::mock_preference( |
646 |
'UpdateNotForLoanStatusOnCheckout', q{ _ALL_: |
647 |
-1: 0 |
648 |
} |
649 |
); |
650 |
t::lib::Mocks::mock_preference( |
651 |
'UpdateNotForLoanStatusOnCheckin', q{ _ALL_: |
652 |
-2: 0 |
653 |
} |
654 |
); |
655 |
|
656 |
$item->notforloan(-1)->store; |
657 |
C4::Circulation::_updateNotForLoanFromYaml( $item, 'UpdateNotForLoanStatusOnCheckout' ); |
658 |
ok( |
659 |
$item->notforloan eq 0, |
660 |
q{_updateNotForLoanFromYaml: UpdateNotForLoanStatusOnCheckout updates notforloan value from -1 to 0 with setting "_ALL_: -1: 0"} |
661 |
); |
662 |
|
663 |
$item->notforloan(-2)->store; |
664 |
C4::Circulation::_updateNotForLoanFromYaml( $item, 'UpdateNotForLoanStatusOnCheckin' ); |
665 |
ok( |
666 |
$item->notforloan eq 0, |
667 |
q{_updateNotForLoanFromYaml: UpdateNotForLoanStatusOnCheckin updates notforloan value from -1 to 0 with setting "_ALL_: -1: 0"} |
668 |
); |
669 |
|
670 |
$item->notforloan(1)->store; |
671 |
C4::Circulation::_updateNotForLoanFromYaml( $item, 'UpdateNotForLoanStatusOnCheckout' ); |
672 |
ok( |
673 |
$item->notforloan eq 1, |
674 |
q{_updateNotForLoanFromYaml: UpdateNotForLoanStatusOnCheckout does not update notforloan value from 1 with setting "_ALL_: -1: 0"} |
675 |
); |
676 |
|
677 |
$item->notforloan(1)->store; |
678 |
C4::Circulation::_updateNotForLoanFromYaml( $item, 'UpdateNotForLoanStatusOnCheckin' ); |
679 |
ok( |
680 |
$item->notforloan eq 1, |
681 |
q{_updateNotForLoanFromYaml: UpdateNotForLoanStatusOnCheckin does not update notforloan value from 1 with setting "_ALL_: -1: 0"} |
682 |
); |
683 |
|
684 |
t::lib::Mocks::mock_preference( |
685 |
'UpdateNotForLoanStatusOnCheckout', q{ |
686 |
_ALL_: |
687 |
-1: 0 |
688 |
} . $itemtype . q{: |
689 |
-1: 1 |
690 |
} |
691 |
); |
692 |
t::lib::Mocks::mock_preference( |
693 |
'UpdateNotForLoanStatusOnCheckin', q{ |
694 |
_ALL_: |
695 |
-2: 0 |
696 |
} . $itemtype . q{: |
697 |
-2: 1 |
698 |
} |
699 |
); |
700 |
|
701 |
$item->notforloan(-1)->store; |
702 |
C4::Circulation::_updateNotForLoanFromYaml( $item, 'UpdateNotForLoanStatusOnCheckout' ); |
703 |
ok( |
704 |
$item->notforloan eq 1, |
705 |
q{_updateNotForLoanFromYaml: UpdateNotForLoanStatusOnCheckout uses the most specific rule to update notforloan } |
706 |
); |
707 |
|
708 |
$item->notforloan(-2)->store; |
709 |
C4::Circulation::_updateNotForLoanFromYaml( $item, 'UpdateNotForLoanStatusOnCheckin' ); |
710 |
ok( |
711 |
$item->notforloan eq 1, |
712 |
q{_updateNotForLoanFromYaml: UpdateNotForLoanStatusOnCheckout uses the most specific rule to update notforloan } |
713 |
); |
714 |
|
715 |
t::lib::Mocks::mock_preference( |
716 |
'UpdateNotForLoanStatusOnCheckout', q{ |
717 |
_ALL_: |
718 |
-1: 0 |
719 |
NOT_} . $itemtype . q{: |
720 |
-1: 1 |
721 |
} |
722 |
); |
723 |
t::lib::Mocks::mock_preference( |
724 |
'UpdateNotForLoanStatusOnCheckin', q{ |
725 |
_ALL_: |
726 |
-2: 0 |
727 |
NOT_} . $itemtype . q{: |
728 |
-2: 1 |
729 |
} |
730 |
); |
731 |
|
732 |
$item->notforloan(-1)->store; |
733 |
C4::Circulation::_updateNotForLoanFromYaml( $item, 'UpdateNotForLoanStatusOnCheckout' ); |
734 |
ok( |
735 |
$item->notforloan eq 0, |
736 |
q{_updateNotForLoanFromYaml: UpdateNotForLoanStatusOnCheckout uses the default rule (_ALL_) if no rule matches the itype} |
737 |
); |
738 |
|
739 |
$item->notforloan(-2)->store; |
740 |
C4::Circulation::_updateNotForLoanFromYaml( $item, 'UpdateNotForLoanStatusOnCheckin' ); |
741 |
ok( |
742 |
$item->notforloan eq 0, |
743 |
q{_updateNotForLoanFromYaml: UpdateNotForLoanStatusOnCheckin uses the default rule (_ALL_) if no rule matches the itype} |
744 |
); |
745 |
|
746 |
$item->delete; |
747 |
}; |
748 |
|
749 |
########################################## |
750 |
# |
751 |
# END _updateNotForLoanFromYaml |
752 |
# |
753 |
########################################## |
754 |
|
609 |
my $itemnumber2 = Koha::Item->new( |
755 |
my $itemnumber2 = Koha::Item->new( |
610 |
{ |
756 |
{ |
611 |
biblionumber => $biblionumber, |
757 |
biblionumber => $biblionumber, |
612 |
- |
|
|