From 5f6df325a7d61cfcacce8826a48ba52787122a8a Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Thu, 29 Nov 2018 10:55:51 -0300 Subject: [PATCH] Bug 21896: (QA follow-up) Add tests for FIFO behaviour Signed-off-by: Tomas Cohen Arazi --- t/db_dependent/Koha/Account.t | 40 ++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/t/db_dependent/Koha/Account.t b/t/db_dependent/Koha/Account.t index 39c0664f27..f11a2f2972 100755 --- a/t/db_dependent/Koha/Account.t +++ b/t/db_dependent/Koha/Account.t @@ -228,7 +228,7 @@ subtest 'lines() tests' => sub { subtest 'reconcile_balance' => sub { - plan tests => 3; + plan tests => 4; subtest 'more credit than debit' => sub { @@ -345,4 +345,42 @@ subtest 'reconcile_balance' => sub { $schema->storage->txn_rollback; }; + + subtest 'credits are applied to older debits first' => sub { + + plan tests => 9; + + $schema->storage->txn_begin; + + my $patron = $builder->build_object({ class => 'Koha::Patrons' }); + my $account = $patron->account; + + # Add Credits + $account->add_credit({ amount => 1 }); + $account->add_credit({ amount => 3 }); + + # Add Debits TODO: replace for calls to add_debit when time comes + my $debit_1 = Koha::Account::Line->new({ borrowernumber => $patron->id, amount => 1, amountoutstanding => 1 })->store; + my $debit_2 = Koha::Account::Line->new({ borrowernumber => $patron->id, amount => 2, amountoutstanding => 2 })->store; + my $debit_3 = Koha::Account::Line->new({ borrowernumber => $patron->id, amount => 3, amountoutstanding => 3 })->store; + + is( $account->balance(), 2, "Account balance is 2" ); + is( $account->outstanding_debits->total_outstanding, 6, 'Outstanding debits sum 6' ); + is( $account->outstanding_credits->total_outstanding, -4, 'Outstanding credits sum -4' ); + + $account->reconcile_balance(); + + is( $account->balance(), 2, "Account balance is 2" ); + is( $account->outstanding_debits->total_outstanding, 2, 'Outstanding debits sum 2' ); + is( $account->outstanding_credits->total_outstanding, 0, 'Outstanding credits sum 0' ); + + $debit_1->discard_changes; + is( $debit_1->amountoutstanding + 0, 0, 'Old debit payed' ); + $debit_2->discard_changes; + is( $debit_2->amountoutstanding + 0, 0, 'Old debit payed' ); + $debit_3->discard_changes; + is( $debit_3->amountoutstanding + 0, 2, 'Newest debit only partially payed' ); + + $schema->storage->txn_rollback; + }; }; -- 2.19.2