|
Lines 840-853
subtest "CanBookBeRenewed tests" => sub {
Link Here
|
| 840 |
} |
840 |
} |
| 841 |
); |
841 |
); |
| 842 |
|
842 |
|
| 843 |
my $issue_4 = AddIssue( $renewing_borrower_obj->unblessed, $item_4->barcode, undef, undef, undef, undef, { auto_renew => 1 } ); |
843 |
my $auto_renew_issue = AddIssue( $renewing_borrower_obj->unblessed, $item_4->barcode, undef, undef, undef, undef, { auto_renew => 1 } ); |
| 844 |
my $info; |
844 |
my $info; |
| 845 |
( $renewokay, $error, $info ) = |
845 |
( $renewokay, $error, $info ) = |
| 846 |
CanBookBeRenewed( $renewing_borrower_obj, $issue_4 ); |
846 |
CanBookBeRenewed( $renewing_borrower_obj, $auto_renew_issue ); |
| 847 |
is( $renewokay, 0, 'Bug 14101: Cannot renew, renewal is automatic and premature' ); |
847 |
is( $renewokay, 0, 'Bug 14101: Cannot renew, renewal is automatic and premature' ); |
| 848 |
is( $error, 'auto_too_soon', |
848 |
is( $error, 'auto_too_soon', |
| 849 |
'Bug 14101: Cannot renew, renewal is automatic and premature, "No renewal before" = undef (returned code is auto_too_soon)' ); |
849 |
'Bug 14101: Cannot renew, renewal is automatic and premature, "No renewal before" = undef (returned code is auto_too_soon)' ); |
| 850 |
is( $info->{soonest_renew_date} , dt_from_string($issue_4->date_due), "Due date is returned as earliest renewal date when error is 'auto_too_soon'" ); |
850 |
is( $info->{soonest_renew_date} , dt_from_string($auto_renew_issue->date_due), "Due date is returned as earliest renewal date when error is 'auto_too_soon'" ); |
| 851 |
AddReserve( |
851 |
AddReserve( |
| 852 |
{ |
852 |
{ |
| 853 |
branchcode => $branch, |
853 |
branchcode => $branch, |
|
Lines 863-891
subtest "CanBookBeRenewed tests" => sub {
Link Here
|
| 863 |
found => $found |
863 |
found => $found |
| 864 |
} |
864 |
} |
| 865 |
); |
865 |
); |
| 866 |
( $renewokay, $error ) = CanBookBeRenewed( $renewing_borrower_obj, $issue_4 ); |
866 |
( $renewokay, $error ) = CanBookBeRenewed( $renewing_borrower_obj, $auto_renew_issue ); |
| 867 |
is( $renewokay, 0, 'Still should not be able to renew' ); |
867 |
is( $renewokay, 0, 'Still should not be able to renew' ); |
| 868 |
is( $error, 'on_reserve', 'returned code is on_reserve, reserve checked when not checking for cron' ); |
868 |
is( $error, 'on_reserve', 'returned code is on_reserve, reserve checked when not checking for cron' ); |
| 869 |
( $renewokay, $error, $info ) = CanBookBeRenewed( $renewing_borrower_obj, $issue_4, undef, 1 ); |
869 |
( $renewokay, $error, $info ) = CanBookBeRenewed( $renewing_borrower_obj, $auto_renew_issue, undef, 1 ); |
| 870 |
is( $renewokay, 0, 'Still should not be able to renew' ); |
870 |
is( $renewokay, 0, 'Still should not be able to renew' ); |
| 871 |
is( $error, 'auto_too_soon', 'returned code is auto_too_soon, reserve not checked when checking for cron' ); |
871 |
is( $error, 'auto_too_soon', 'returned code is auto_too_soon, reserve not checked when checking for cron' ); |
| 872 |
is( $info->{soonest_renew_date}, dt_from_string($issue_4->date_due), "Due date is returned as earliest renewal date when error is 'auto_too_soon'" ); |
872 |
is( $info->{soonest_renew_date}, dt_from_string($auto_renew_issue->date_due), "Due date is returned as earliest renewal date when error is 'auto_too_soon'" ); |
| 873 |
( $renewokay, $error ) = CanBookBeRenewed( $renewing_borrower_obj, $issue_4, 1 ); |
873 |
( $renewokay, $error ) = CanBookBeRenewed( $renewing_borrower_obj, $auto_renew_issue, 1 ); |
| 874 |
is( $renewokay, 0, 'Still should not be able to renew' ); |
874 |
is( $renewokay, 0, 'Still should not be able to renew' ); |
| 875 |
is( $error, 'on_reserve', 'returned code is on_reserve, auto_too_soon limit is overridden' ); |
875 |
is( $error, 'on_reserve', 'returned code is on_reserve, auto_too_soon limit is overridden' ); |
| 876 |
( $renewokay, $error ) = CanBookBeRenewed( $renewing_borrower_obj, $issue_4, 1, 1 ); |
876 |
( $renewokay, $error ) = CanBookBeRenewed( $renewing_borrower_obj, $auto_renew_issue, 1, 1 ); |
| 877 |
is( $renewokay, 0, 'Still should not be able to renew' ); |
877 |
is( $renewokay, 0, 'Still should not be able to renew' ); |
| 878 |
is( $error, 'on_reserve', 'returned code is on_reserve, auto_too_soon limit is overridden' ); |
878 |
is( $error, 'on_reserve', 'returned code is on_reserve, auto_too_soon limit is overridden' ); |
| 879 |
$dbh->do('UPDATE circulation_rules SET rule_value = 0 where rule_name = "norenewalbefore"'); |
879 |
$dbh->do('UPDATE circulation_rules SET rule_value = 0 where rule_name = "norenewalbefore"'); |
| 880 |
Koha::Cache::Memory::Lite->flush(); |
880 |
Koha::Cache::Memory::Lite->flush(); |
| 881 |
( $renewokay, $error ) = CanBookBeRenewed( $renewing_borrower_obj, $issue_4, 1 ); |
881 |
( $renewokay, $error ) = CanBookBeRenewed( $renewing_borrower_obj, $auto_renew_issue, 1 ); |
| 882 |
is( $renewokay, 0, 'Still should not be able to renew' ); |
882 |
is( $renewokay, 0, 'Still should not be able to renew' ); |
| 883 |
is( $error, 'on_reserve', 'returned code is on_reserve, auto_renew only happens if not on reserve' ); |
883 |
is( $error, 'on_reserve', 'returned code is on_reserve, auto_renew only happens if not on reserve' ); |
| 884 |
ModReserveCancelAll($item_4->itemnumber, $reserving_borrowernumber); |
884 |
ModReserveCancelAll($item_4->itemnumber, $reserving_borrowernumber); |
| 885 |
|
885 |
|
| 886 |
$renewing_borrower_obj = Koha::Patrons->find($renewing_borrower_obj->borrowernumber); |
886 |
$renewing_borrower_obj = Koha::Patrons->find($renewing_borrower_obj->borrowernumber); |
| 887 |
$renewing_borrower_obj->autorenew_checkouts(0)->store; |
887 |
$renewing_borrower_obj->autorenew_checkouts(0)->store; |
| 888 |
( $renewokay, $error ) = CanBookBeRenewed( $renewing_borrower_obj, $issue_4 ); |
888 |
( $renewokay, $error ) = CanBookBeRenewed( $renewing_borrower_obj, $auto_renew_issue ); |
| 889 |
is( $renewokay, 1, 'No renewal before is undef, but patron opted out of auto_renewal' ); |
889 |
is( $renewokay, 1, 'No renewal before is undef, but patron opted out of auto_renewal' ); |
| 890 |
$renewing_borrower_obj->autorenew_checkouts(1)->store; |
890 |
$renewing_borrower_obj->autorenew_checkouts(1)->store; |
| 891 |
|
891 |
|
|
Lines 910-927
subtest "CanBookBeRenewed tests" => sub {
Link Here
|
| 910 |
# Bug 14101 |
910 |
# Bug 14101 |
| 911 |
# Test premature automatic renewal |
911 |
# Test premature automatic renewal |
| 912 |
( $renewokay, $error, $info ) = |
912 |
( $renewokay, $error, $info ) = |
| 913 |
CanBookBeRenewed( $renewing_borrower_obj, $issue_4 ); |
913 |
CanBookBeRenewed( $renewing_borrower_obj, $auto_renew_issue ); |
| 914 |
is( $renewokay, 0, 'Bug 14101: Cannot renew, renewal is automatic and premature' ); |
914 |
is( $renewokay, 0, 'Bug 14101: Cannot renew, renewal is automatic and premature' ); |
| 915 |
is( $error, 'auto_too_soon', |
915 |
is( $error, 'auto_too_soon', |
| 916 |
'Bug 14101: Cannot renew, renewal is automatic and premature (returned code is auto_too_soon)' |
916 |
'Bug 14101: Cannot renew, renewal is automatic and premature (returned code is auto_too_soon)' |
| 917 |
); |
917 |
); |
| 918 |
is( $info->{soonest_renew_date}, dt_from_string($issue_4->date_due)->subtract( days => 7 ), "Soonest renew date returned when error is 'auto_too_soon'"); |
918 |
is( $info->{soonest_renew_date}, dt_from_string($auto_renew_issue->date_due)->subtract( days => 7 ), "Soonest renew date returned when error is 'auto_too_soon'"); |
| 919 |
|
919 |
|
| 920 |
$renewing_borrower_obj->autorenew_checkouts(0)->store; |
920 |
$renewing_borrower_obj->autorenew_checkouts(0)->store; |
| 921 |
( $renewokay, $error, $info ) = CanBookBeRenewed( $renewing_borrower_obj, $issue_4 ); |
921 |
( $renewokay, $error, $info ) = CanBookBeRenewed( $renewing_borrower_obj, $auto_renew_issue ); |
| 922 |
is( $renewokay, 0, 'No renewal before is 7, patron opted out of auto_renewal still cannot renew early' ); |
922 |
is( $renewokay, 0, 'No renewal before is 7, patron opted out of auto_renewal still cannot renew early' ); |
| 923 |
is( $error, 'too_soon', 'Error is too_soon, no auto' ); |
923 |
is( $error, 'too_soon', 'Error is too_soon, no auto' ); |
| 924 |
is( $info->{soonest_renew_date}, dt_from_string($issue_4->date_due)->subtract( days => 7 ), "Soonest renew date returned when error is 'too_soon'"); |
924 |
is( $info->{soonest_renew_date}, dt_from_string($auto_renew_issue->date_due)->subtract( days => 7 ), "Soonest renew date returned when error is 'too_soon'"); |
| 925 |
$renewing_borrower_obj->autorenew_checkouts(1)->store; |
925 |
$renewing_borrower_obj->autorenew_checkouts(1)->store; |
| 926 |
|
926 |
|
| 927 |
# Change policy so that loans can only be renewed exactly on due date (0 days prior to due date) |
927 |
# Change policy so that loans can only be renewed exactly on due date (0 days prior to due date) |
|
Lines 929-946
subtest "CanBookBeRenewed tests" => sub {
Link Here
|
| 929 |
$dbh->do(q{UPDATE circulation_rules SET rule_value = '0' WHERE rule_name = 'norenewalbefore'}); |
929 |
$dbh->do(q{UPDATE circulation_rules SET rule_value = '0' WHERE rule_name = 'norenewalbefore'}); |
| 930 |
Koha::Cache::Memory::Lite->flush(); |
930 |
Koha::Cache::Memory::Lite->flush(); |
| 931 |
( $renewokay, $error, $info ) = |
931 |
( $renewokay, $error, $info ) = |
| 932 |
CanBookBeRenewed( $renewing_borrower_obj, $issue_4 ); |
932 |
CanBookBeRenewed( $renewing_borrower_obj, $auto_renew_issue ); |
| 933 |
is( $renewokay, 0, 'Bug 14101: Cannot renew, renewal is automatic and premature' ); |
933 |
is( $renewokay, 0, 'Bug 14101: Cannot renew, renewal is automatic and premature' ); |
| 934 |
is( $error, 'auto_too_soon', |
934 |
is( $error, 'auto_too_soon', |
| 935 |
'Bug 14101: Cannot renew, renewal is automatic and premature, "No renewal before" = 0 (returned code is auto_too_soon)' |
935 |
'Bug 14101: Cannot renew, renewal is automatic and premature, "No renewal before" = 0 (returned code is auto_too_soon)' |
| 936 |
); |
936 |
); |
| 937 |
is( $info->{soonest_renew_date}, dt_from_string($issue_4->date_due), "Soonest renew date returned when error is 'auto_too_soon'"); |
937 |
is( $info->{soonest_renew_date}, dt_from_string($auto_renew_issue->date_due), "Soonest renew date returned when error is 'auto_too_soon'"); |
| 938 |
|
938 |
|
| 939 |
$renewing_borrower_obj->autorenew_checkouts(0)->store; |
939 |
$renewing_borrower_obj->autorenew_checkouts(0)->store; |
| 940 |
( $renewokay, $error, $info ) = CanBookBeRenewed( $renewing_borrower_obj, $issue_4 ); |
940 |
( $renewokay, $error, $info ) = CanBookBeRenewed( $renewing_borrower_obj, $auto_renew_issue ); |
| 941 |
is( $renewokay, 0, 'No renewal before is 0, patron opted out of auto_renewal still cannot renew early' ); |
941 |
is( $renewokay, 0, 'No renewal before is 0, patron opted out of auto_renewal still cannot renew early' ); |
| 942 |
is( $error, 'too_soon', 'Error is too_soon, no auto' ); |
942 |
is( $error, 'too_soon', 'Error is too_soon, no auto' ); |
| 943 |
is( $info->{soonest_renew_date}, dt_from_string($issue_4->date_due), "Soonest renew date returned when error is 'auto_too_soon'"); |
943 |
is( $info->{soonest_renew_date}, dt_from_string($auto_renew_issue->date_due), "Soonest renew date returned when error is 'auto_too_soon'"); |
| 944 |
$renewing_borrower_obj->autorenew_checkouts(1)->store; |
944 |
$renewing_borrower_obj->autorenew_checkouts(1)->store; |
| 945 |
|
945 |
|
| 946 |
# Change policy so that loans can be renewed 99 days prior to the due date |
946 |
# Change policy so that loans can be renewed 99 days prior to the due date |
|
Lines 948-961
subtest "CanBookBeRenewed tests" => sub {
Link Here
|
| 948 |
$dbh->do(q{UPDATE circulation_rules SET rule_value = '99' WHERE rule_name = 'norenewalbefore'}); |
948 |
$dbh->do(q{UPDATE circulation_rules SET rule_value = '99' WHERE rule_name = 'norenewalbefore'}); |
| 949 |
Koha::Cache::Memory::Lite->flush(); |
949 |
Koha::Cache::Memory::Lite->flush(); |
| 950 |
( $renewokay, $error ) = |
950 |
( $renewokay, $error ) = |
| 951 |
CanBookBeRenewed( $renewing_borrower_obj, $issue_4 ); |
951 |
CanBookBeRenewed( $renewing_borrower_obj, $auto_renew_issue ); |
| 952 |
is( $renewokay, 0, 'Bug 14101: Cannot renew, renewal is automatic' ); |
952 |
is( $renewokay, 0, 'Bug 14101: Cannot renew, renewal is automatic' ); |
| 953 |
is( $error, 'auto_renew', |
953 |
is( $error, 'auto_renew', |
| 954 |
'Bug 14101: Cannot renew, renewal is automatic (returned code is auto_renew)' |
954 |
'Bug 14101: Cannot renew, renewal is automatic (returned code is auto_renew)' |
| 955 |
); |
955 |
); |
| 956 |
|
956 |
|
| 957 |
$renewing_borrower_obj->autorenew_checkouts(0)->store; |
957 |
$renewing_borrower_obj->autorenew_checkouts(0)->store; |
| 958 |
( $renewokay, $error ) = CanBookBeRenewed( $renewing_borrower_obj, $issue_4 ); |
958 |
( $renewokay, $error ) = CanBookBeRenewed( $renewing_borrower_obj, $auto_renew_issue ); |
| 959 |
is( $renewokay, 1, 'No renewal before is 99, patron opted out of auto_renewal so can renew' ); |
959 |
is( $renewokay, 1, 'No renewal before is 99, patron opted out of auto_renewal so can renew' ); |
| 960 |
$renewing_borrower_obj->autorenew_checkouts(1)->store; |
960 |
$renewing_borrower_obj->autorenew_checkouts(1)->store; |
| 961 |
|
961 |
|
| 962 |
- |
|
|