Bug 14395: Unit tests

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 <jweaver@bywatersolutions.com>
This commit is contained in:
Holger Meißner 2015-07-27 15:18:53 +02:00 committed by Kyle M Hall
parent b52e879209
commit 69364a41db

View file

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