From: Tomas Cohen Arazi Date: Wed, 12 Dec 2018 13:49:18 +0000 (-0300) Subject: Bug 21727: Unit tests for the refund case X-Git-Tag: v19.05.00~1478 X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=commitdiff_plain;h=5994296aad5368440c1d901f42fdf3a1b50d62b9;p=koha_ffzg Bug 21727: Unit tests for the refund case This patch introduces tests for the behaviour when the negative adjust exceedes the amount that was already paid. In this case, the line amount is expected to be set to 0, and a credit with the payed amount created. To test: - Apply this patch - Run: $ kshell k$ prove t/db_dependent/Koha/Account/Lines.t => SUCCESS: tests pass! Signed-off-by: Tomas Cohen Arazi Signed-off-by: Josef Moravec Signed-off-by: Nick Clemens --- diff --git a/t/db_dependent/Koha/Account/Lines.t b/t/db_dependent/Koha/Account/Lines.t index b26d80d4e0..b0ea018616 100755 --- a/t/db_dependent/Koha/Account/Lines.t +++ b/t/db_dependent/Koha/Account/Lines.t @@ -299,7 +299,7 @@ subtest 'Keep account info when a patron is deleted' => sub { subtest 'adjust() tests' => sub { - plan tests => 19; + plan tests => 33; $schema->storage->txn_begin; @@ -379,6 +379,35 @@ subtest 'adjust() tests' => sub { is( $schema->resultset('ActionLog')->count(), $action_logs + 1, 'Log was added' ); + # Decrement the partially paid fine, less than what was paid + $debit_2->adjust( { amount => 50, type => 'fine_increment' } )->discard_changes; + + is( $debit_2->amount * 1, 50, 'Fine amount was updated in full' ); + is( $debit_2->amountoutstanding * 1, 10, 'Fine amountoutstanding was updated by difference' ); + is( $debit_2->lastincrement * 1, -110, 'lastincrement is the to the right value' ); + + $offsets = Koha::Account::Offsets->search( { debit_id => $debit_2->id } ); + is( $offsets->count, 4, 'An offset is generated for the decrement' ); + $THIS_offset = $offsets->last; + is( $THIS_offset->amount * 1, -110, 'Amount was calculated correctly (decrement by 110)' ); + is( $THIS_offset->type, 'Fine Update', 'Adjust type stored correctly' ); + + # Decrement the partially paid fine, more than what was paid + $debit_2->adjust( { amount => 30, type => 'fine_increment' } )->discard_changes; + is( $debit_2->amount * 1, 30, 'Fine amount was updated in full' ); + is( $debit_2->amountoutstanding * 1, 0, 'Fine amountoutstanding was zeroed (payment was 40)' ); + is( $debit_2->lastincrement * 1, -20, 'lastincrement is the to the right value' ); + + $offsets = Koha::Account::Offsets->search( { debit_id => $debit_2->id } ); + is( $offsets->count, 5, 'An offset is generated for the decrement' ); + $THIS_offset = $offsets->last; + is( $THIS_offset->amount * 1, -20, 'Amount was calculated correctly (decrement by 20)' ); + is( $THIS_offset->type, 'Fine Update', 'Adjust type stored correctly' ); + + my $overpayment_refund = $account->lines->last; + is( $overpayment_refund->amount * 1, -10, 'A new credit has been added' ); + is( $overpayment_refund->description, 'Overpayment refund', 'Credit generated with the expected description' ); + $schema->storage->txn_rollback; };