Bug 14101: Unit tests

This patch adds new test cases to check if CanBookBeRenewed provides
correct return values and error codes for premature renewals. Both manual
and automatic renewals and different settings for 'No renewal before'
are tested.

To test:
1) prove t/db_dependent/Circulation.t

Sponsored-by: Hochschule für Gesundheit (hsg), Germany

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
Holger Meißner 2015-09-22 14:03:33 +02:00 committed by Tomas Cohen Arazi
parent a68d565622
commit 4fb4e16d8c
1 changed files with 31 additions and 11 deletions

View File

@ -29,7 +29,7 @@ use Koha::Database;
use t::lib::TestBuilder;
use Test::More tests => 78 ;
use Test::More tests => 82;
BEGIN {
use_ok('C4::Circulation');
@ -175,7 +175,7 @@ $dbh->do(
'*', '*', '*', 25,
20, 14, 'days',
1, 7,
'', 0,
undef, 0,
.10, 1
);
@ -470,28 +470,48 @@ C4::Context->dbh->do("DELETE FROM accountlines");
AddIssue( $renewing_borrower, $barcode4, undef, undef, undef, undef, { auto_renew => 1 } );
( $renewokay, $error ) =
CanBookBeRenewed( $renewing_borrowernumber, $itemnumber4 );
is( $renewokay, 0, 'Cannot renew, renewal is automatic' );
is( $error, 'auto_renew',
'Cannot renew, renewal is automatic (returned code is auto_renew)' );
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
$dbh->do('UPDATE issuingrules SET norenewalbefore = 7');
( $renewokay, $error ) = CanBookBeRenewed($renewing_borrowernumber, $itemnumber);
is( $renewokay, 0, 'Cannot renew, renewal is premature');
is( $error, 'too_soon', 'Cannot renew, renewal is premature (returned code is too_soon)');
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)');
is(
GetSoonestRenewDate($renewing_borrowernumber, $itemnumber),
$datedue->clone->add(days => -7),
'renewals permitted 7 days before due date, as expected',
'Bug 7413: Renewals permitted 7 days before due date, as expected',
);
# Test automatic renewal again
( $renewokay, $error ) =
CanBookBeRenewed( $renewing_borrowernumber, $itemnumber4 );
is( $renewokay, 0, 'Cannot renew, renewal is automatic and premature' );
is( $renewokay, 0, 'Bug 14101: Cannot renew, renewal is automatic and premature' );
is( $error, 'auto_too_soon',
'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)
# and test automatic renewal again
$dbh->do('UPDATE issuingrules SET norenewalbefore = 0');
( $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" = 0 (returned code is auto_too_soon)'
);
# Change policy so that loans can be renewed 99 days prior to the due date
# and test automatic renewal again
$dbh->do('UPDATE issuingrules SET norenewalbefore = 99');
( $renewokay, $error ) =
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)'
);
# Too many renewals
@ -693,7 +713,7 @@ C4::Context->dbh->do("DELETE FROM accountlines");
'*', '*', '*', 25,
20, 14, 'days',
1, 7,
'', 0,
undef, 0,
.10, 1
);
my $biblio = MARC::Record->new();