From 102b1ca4bf3b1721f496417473643ff951c13833 Mon Sep 17 00:00:00 2001 From: Alex Arnaud Date: Fri, 4 Jan 2019 16:33:39 +0100 Subject: [PATCH] Bug 21738: make call of CanBookBeReserved more safe Signed-off-by: Kyle M Hall Signed-off-by: Katrin Fischer Signed-off-by: Katrin Fischer Signed-off-by: Nick Clemens --- C4/Reserves.pm | 2 +- reserve/request.pl | 1 - t/db_dependent/Reserves.t | 8 +++++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/C4/Reserves.pm b/C4/Reserves.pm index 77880dc737..974168f8a3 100644 --- a/C4/Reserves.pm +++ b/C4/Reserves.pm @@ -284,7 +284,7 @@ sub CanBookBeReserved{ push (@itemnumbers, @hostitems); } - my $canReserve; + my $canReserve = { status => '' }; foreach my $itemnumber (@itemnumbers) { $canReserve = CanItemBeReserved( $borrowernumber, $itemnumber, $pickup_branchcode ); return { status => 'OK' } if $canReserve->{status} eq 'OK'; diff --git a/reserve/request.pl b/reserve/request.pl index 91b6ffdd95..2ef00c8b95 100755 --- a/reserve/request.pl +++ b/reserve/request.pl @@ -222,7 +222,6 @@ foreach my $biblionumber (@biblionumbers) { if ( $patron ) { { # CanBookBeReserved my $canReserve = CanBookBeReserved( $patron->borrowernumber, $biblionumber ); - $canReserve->{status} //= ''; if ( $canReserve->{status} eq 'OK' ) { #All is OK and we can continue diff --git a/t/db_dependent/Reserves.t b/t/db_dependent/Reserves.t index 92f7303a23..5b4c681954 100755 --- a/t/db_dependent/Reserves.t +++ b/t/db_dependent/Reserves.t @@ -17,7 +17,7 @@ use Modern::Perl; -use Test::More tests => 58; +use Test::More tests => 59; use Test::MockModule; use Test::Warn; @@ -90,6 +90,10 @@ my ( $item_bibnum, $item_bibitemnum, $itemnumber ) = AddItem( $bibnum ); +my $biblio_with_no_item = $builder->build({ + source => 'Biblio' +}); + # Modify item; setting barcode. my $testbarcode = '97531'; @@ -511,6 +515,8 @@ $borrower->{dateofbirth} = DateTime->now->add( years => -30 ); Koha::Patrons->find( $borrowernumber )->set({ dateofbirth => $borrower->{dateofbirth} })->store; is( C4::Reserves::CanBookBeReserved($borrowernumber, $biblionumber)->{status} , 'OK', "Reserving a 'PEGI 16' Biblio by a 30 year old borrower succeeds"); + +is( C4::Reserves::CanBookBeReserved($borrowernumber, $biblio_with_no_item->{biblionumber})->{status} , '', "Biblio with no item. Status is empty"); #### ####### EO Bug 13113 <<< #### -- 2.39.5