From 1b29258df1de93b9eaa0c8d66767e8d78db87def Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Wed, 27 Jun 2018 03:53:27 +0000 Subject: [PATCH] Bug 20946: (RM follow-up) Additional tests and fix addition to undef Added a few tests with credit lines and found we got warnings, adjusted the routine to avoid this Signed-off-by: Tomas Cohen Arazi Signed-off-by: Nick Clemens Signed-off-by: Martin Renvoize --- Koha/Account.pm | 5 ++--- t/db_dependent/Koha/Account.t | 19 ++++++++++++++++++- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/Koha/Account.pm b/Koha/Account.pm index bffc98bd65..4b48d692ae 100644 --- a/Koha/Account.pm +++ b/Koha/Account.pm @@ -22,7 +22,7 @@ use Modern::Perl; use Carp; use Data::Dumper; use List::MoreUtils qw( uniq ); -use List::Util qw( sum ); +use List::Util qw( sum0 ); use C4::Log qw( logaction ); use C4::Stats qw( UpdateStats ); @@ -305,8 +305,7 @@ sub outstanding_debits { } ); - # sum returns undef it list is empty - my $total = sum( $lines->get_column('amountoutstanding') ) + 0; + my $total = sum0( $lines->get_column('amountoutstanding') ); return ( $total, $lines ); } diff --git a/t/db_dependent/Koha/Account.t b/t/db_dependent/Koha/Account.t index 5d15f4aa61..c0cce13609 100755 --- a/t/db_dependent/Koha/Account.t +++ b/t/db_dependent/Koha/Account.t @@ -31,7 +31,7 @@ my $builder = t::lib::TestBuilder->new; subtest 'outstanding_debits() tests' => sub { - plan tests => 7; + plan tests => 12; $schema->storage->txn_begin; @@ -59,6 +59,23 @@ subtest 'outstanding_debits() tests' => sub { is( $total, 0, "Total if no outstanding debits is 0" ); is( $lines->count, 0, "With no outstanding debits, we get back a Lines object with 0 lines" ); + my $patron_2 = $builder->build_object({ class => 'Koha::Patrons' }); + Koha::Account::Line->new({ borrowernumber => $patron_2->id, amountoutstanding => -2 })->store; + my $just_one = Koha::Account::Line->new({ borrowernumber => $patron_2->id, amountoutstanding => 3 })->store; + Koha::Account::Line->new({ borrowernumber => $patron_2->id, amountoutstanding => -6 })->store; + ( $total, $lines ) = Koha::Account->new({ patron_id => $patron_2->id })->outstanding_debits(); + is( $total, 3, "Total if some outstanding debits and some credits is only debits" ); + is( $lines->count, 1, "With 1 outstanding debits, we get back a Lines object with 1 lines" ); + my $the_line = Koha::Account::Lines->find( $just_one->id ); + is_deeply( $the_line->unblessed, $lines->next->unblessed, "We get back the one correct line"); + + my $patron_3 = $builder->build_object({ class => 'Koha::Patrons' }); + Koha::Account::Line->new({ borrowernumber => $patron_2->id, amountoutstanding => -2 })->store; + Koha::Account::Line->new({ borrowernumber => $patron_2->id, amountoutstanding => -20 })->store; + Koha::Account::Line->new({ borrowernumber => $patron_2->id, amountoutstanding => -200 })->store; + ( $total, $lines ) = Koha::Account->new({ patron_id => $patron_3->id })->outstanding_debits(); + is( $total, 0, "Total if no outstanding debits total is 0" ); + is( $lines->count, 0, "With 0 outstanding debits, we get back a Lines object with 0 lines" ); $schema->storage->txn_rollback; }; -- 2.39.5