From 69364a41db8879d0b3524d7cf0d31cd48079e35b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Holger=20Mei=C3=9Fner?= Date: Mon, 27 Jul 2015 15:18:53 +0200 Subject: [PATCH] Bug 14395: Unit tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This patch adds test cases for the new syspref NoRenewalBeforePrecision. Tests if GetSoonestRenewDate returns correct values for both 'date' and 'exact_time' settings. Also adds a few comments related to bugs 7413 and 14101. To test: 1) prove t/db_dependent/Circulation.t Sponsored-by: Hochschule für Gesundheit (hsg), Germany Signed-off-by: Jesse Weaver --- t/db_dependent/Circulation.t | 40 ++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 11 deletions(-) diff --git a/t/db_dependent/Circulation.t b/t/db_dependent/Circulation.t index 12edb53f4c..0ad38c9520 100755 --- a/t/db_dependent/Circulation.t +++ b/t/db_dependent/Circulation.t @@ -29,7 +29,7 @@ use Koha::Database; use t::lib::TestBuilder; -use Test::More tests => 82; +use Test::More tests => 83; BEGIN { use_ok('C4::Circulation'); @@ -455,7 +455,9 @@ C4::Context->dbh->do("DELETE FROM accountlines"); $reserveid = C4::Reserves::GetReserveId({ biblionumber => $biblionumber, itemnumber => $itemnumber, borrowernumber => $reserving_borrowernumber}); CancelReserve({ reserve_id => $reserveid }); + # Bug 14101 # Test automatic renewal before value for "norenewalbefore" in policy is set + # In this case automatic renewal is not permitted prior to due date my $barcode4 = '11235813'; my ( $item_bibnum4, $item_bibitemnum4, $itemnumber4 ) = AddItem( { @@ -467,31 +469,47 @@ C4::Context->dbh->do("DELETE FROM accountlines"); $biblionumber ); - AddIssue( $renewing_borrower, $barcode4, undef, undef, undef, undef, { auto_renew => 1 } ); + AddIssue( $renewing_borrower, $barcode4, undef, undef, undef, undef, + { auto_renew => 1 } ); ( $renewokay, $error ) = CanBookBeRenewed( $renewing_borrowernumber, $itemnumber4 ); is( $renewokay, 0, 'Bug 14101: Cannot renew, renewal is automatic and premature' ); is( $error, 'auto_too_soon', 'Bug 14101: Cannot renew, renewal is automatic and premature, "No renewal before" = undef (returned code is auto_too_soon)' ); - # set policy to require that loans cannot be - # renewed until seven days prior to the due date + # Bug 7413 + # Test premature manual renewal $dbh->do('UPDATE issuingrules SET norenewalbefore = 7'); + ( $renewokay, $error ) = CanBookBeRenewed($renewing_borrowernumber, $itemnumber); is( $renewokay, 0, 'Bug 7413: Cannot renew, renewal is premature'); is( $error, 'too_soon', 'Bug 7413: Cannot renew, renewal is premature (returned code is too_soon)'); + + # Bug 14395 + # Test 'exact time' setting for syspref NoRenewalBeforePrecision + C4::Context->set_preference( 'NoRenewalBeforePrecision', 'exact_time' ); is( - GetSoonestRenewDate($renewing_borrowernumber, $itemnumber), - $datedue->clone->add(days => -7), - 'Bug 7413: Renewals permitted 7 days before due date, as expected', + GetSoonestRenewDate( $renewing_borrowernumber, $itemnumber ), + $datedue->clone->add( days => -7 ), + 'Bug 14395: Renewals permitted 7 days before due date, as expected' ); - # Test automatic renewal again + # Bug 14395 + # Test 'date' setting for syspref NoRenewalBeforePrecision + C4::Context->set_preference( 'NoRenewalBeforePrecision', 'date' ); + is( + GetSoonestRenewDate( $renewing_borrowernumber, $itemnumber ), + $datedue->clone->add( days => -7 )->truncate( to => 'day' ), + 'Bug 14395: Renewals permitted 7 days before due date, as expected' + ); + + # Bug 14101 + # Test premature automatic renewal ( $renewokay, $error ) = CanBookBeRenewed( $renewing_borrowernumber, $itemnumber4 ); is( $renewokay, 0, 'Bug 14101: Cannot renew, renewal is automatic and premature' ); is( $error, 'auto_too_soon', -'Bug 14101: Cannot renew, renewal is automatic and premature (returned code is auto_too_soon)' + 'Bug 14101: Cannot renew, renewal is automatic and premature (returned code is auto_too_soon)' ); # Change policy so that loans can only be renewed exactly on due date (0 days prior to due date) @@ -501,7 +519,7 @@ C4::Context->dbh->do("DELETE FROM accountlines"); CanBookBeRenewed( $renewing_borrowernumber, $itemnumber4 ); is( $renewokay, 0, 'Bug 14101: Cannot renew, renewal is automatic and premature' ); is( $error, 'auto_too_soon', -'Bug 14101: Cannot renew, renewal is automatic and premature, "No renewal before" = 0 (returned code is auto_too_soon)' + 'Bug 14101: Cannot renew, renewal is automatic and premature, "No renewal before" = 0 (returned code is auto_too_soon)' ); # Change policy so that loans can be renewed 99 days prior to the due date @@ -511,7 +529,7 @@ C4::Context->dbh->do("DELETE FROM accountlines"); CanBookBeRenewed( $renewing_borrowernumber, $itemnumber4 ); is( $renewokay, 0, 'Bug 14101: Cannot renew, renewal is automatic' ); is( $error, 'auto_renew', -'Bug 14101: Cannot renew, renewal is automatic (returned code is auto_renew)' + 'Bug 14101: Cannot renew, renewal is automatic (returned code is auto_renew)' ); # Too many renewals