Bug 23091: Add tests for _RestoreOverdueForLostAndFound
This patch adds unit tests for the newly introduced _RestoreOverdueForLostAndFound method in C4::Circulation. Test plan 1/ Read the new tests added to t/db_dependent/Circuation.t to ensure they make sense 2/ Run the tests and verify they pass 3/ Signoff Signed-off-by: Andrew Fuerste-Henry <andrew@bywatersolutions.com> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
This commit is contained in:
parent
7a07e11128
commit
e7d4bacfc6
|
|
@ -1552,6 +1552,7 @@ sub AddIssue {
|
|||
);
|
||||
|
||||
if ($lostreturn_policy) {
|
||||
|
||||
if ( $lostreturn_policy eq 'charge' ) {
|
||||
$actualissue //= Koha::Old::Checkouts->search(
|
||||
{ itemnumber => $item_unblessed->{itemnumber} },
|
||||
|
|
@ -2107,6 +2108,7 @@ sub AddReturn {
|
|||
);
|
||||
|
||||
if ($lostreturn_policy) {
|
||||
|
||||
if ( $lostreturn_policy eq 'charge' ) {
|
||||
$issue //= Koha::Old::Checkouts->search(
|
||||
{ itemnumber => $item->itemnumber },
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ use Test::More tests => 50;
|
|||
use Test::Exception;
|
||||
use Test::MockModule;
|
||||
use Test::Deep qw( cmp_deeply );
|
||||
use Test::Warn;
|
||||
|
||||
use Data::Dumper;
|
||||
use DateTime;
|
||||
|
|
@ -2447,7 +2448,7 @@ subtest 'AddReturn | is_overdue' => sub {
|
|||
is( int($patron->account->balance()), 0, 'AddReturn: pass return_date => no overdue' );
|
||||
Koha::Account::Lines->search({ borrowernumber => $patron->borrowernumber })->delete;
|
||||
|
||||
subtest 'bug 22877' => sub {
|
||||
subtest 'bug 22877 | Lost item return' => sub {
|
||||
|
||||
plan tests => 3;
|
||||
|
||||
|
|
@ -2697,6 +2698,71 @@ subtest 'AddReturn | is_overdue' => sub {
|
|||
};
|
||||
};
|
||||
|
||||
subtest '_RestoreOverdueForLostAndFound' => sub {
|
||||
|
||||
plan tests => 7;
|
||||
|
||||
my $manager = $builder->build_object( { class => "Koha::Patrons" } );
|
||||
t::lib::Mocks::mock_userenv(
|
||||
{ patron => $manager, branchcode => $manager->branchcode } );
|
||||
|
||||
my $patron = $builder->build_object( { class => "Koha::Patrons" } );
|
||||
my $item = $builder->build_sample_item();
|
||||
|
||||
# No fine found
|
||||
my $result = C4::Circulation::_RestoreOverdueForLostAndFound( $item->itemnumber);
|
||||
is($result, 0, "0 returned when no overdue found");
|
||||
|
||||
# Fine not forgiven
|
||||
my $account = $patron->account;
|
||||
my $overdue = $account->add_debit(
|
||||
{
|
||||
amount => 30.00,
|
||||
user_id => $manager->borrowernumber,
|
||||
library_id => $library2->{branchcode},
|
||||
interface => 'test',
|
||||
item_id => $item->itemnumber,
|
||||
type => 'OVERDUE',
|
||||
}
|
||||
)->store();
|
||||
$overdue->status('LOST')->store();
|
||||
|
||||
$result = C4::Circulation::_RestoreOverdueForLostAndFound( $item->itemnumber);
|
||||
is($result, 0, "0 returned when overdue found without forgival");
|
||||
$overdue->discard_changes;
|
||||
is($overdue->status, 'RETURNED', 'Overdue status updated to RETURNED');
|
||||
|
||||
# Reset status
|
||||
$overdue->status('LOST')->store();
|
||||
|
||||
# Fine forgiven
|
||||
my $credit = $account->add_credit(
|
||||
{
|
||||
amount => 30.00,
|
||||
user_id => $manager->borrowernumber,
|
||||
library_id => $library2->{branchcode},
|
||||
interface => 'test',
|
||||
type => 'FORGIVEN',
|
||||
item_id => $item->itemnumber
|
||||
}
|
||||
);
|
||||
$credit->apply( { debits => [$overdue], offset_type => 'Forgiven' } );
|
||||
|
||||
$result = C4::Circulation::_RestoreOverdueForLostAndFound( $item->itemnumber);
|
||||
|
||||
is( ref($result), 'Koha::Account::Line', 'Return a Koha::Account::Line object on sucess');
|
||||
$overdue->discard_changes;
|
||||
is($overdue->status, 'RETURNED', 'Overdue status updated to RETURNED');
|
||||
is($overdue->amountoutstanding, $overdue->amount, 'Overdue outstanding restored');
|
||||
|
||||
# Missing parameters
|
||||
warning_like {
|
||||
C4::Circulation::_RestoreOverdueForLostAndFound( undef )
|
||||
}
|
||||
qr/_RestoreOverdueForLostAndFound\(\) not supplied valid itemnumber/,
|
||||
"parameter warning received for missing itemnumbernumber";
|
||||
};
|
||||
|
||||
subtest '_FixOverduesOnReturn' => sub {
|
||||
plan tests => 14;
|
||||
|
||||
|
|
@ -2755,7 +2821,7 @@ subtest '_FixOverduesOnReturn' => sub {
|
|||
|
||||
is( $accountline->amountoutstanding + 0, 0, 'Fine amountoutstanding has been reduced to 0' );
|
||||
isnt( $accountline->status, 'UNRETURNED', 'Open fine ( account type OVERDUE ) has been closed out ( status not UNRETURNED )');
|
||||
is( $accountline->status, 'FORGIVEN', 'Open fine ( account type OVERDUE ) has been set to fine forgiven ( status FORGIVEN )');
|
||||
is( $accountline->status, 'RETURNED', 'Open fine ( account type OVERDUE ) has been set to returned ( status RETURNED )');
|
||||
is( ref $offset, "Koha::Account::Offset", "Found matching offset for fine reduction via forgiveness" );
|
||||
is( $offset->amount + 0, -99, "Amount of offset is correct" );
|
||||
my $credit = $offset->credit;
|
||||
|
|
|
|||
Loading…
Reference in New Issue