Browse Source

Bug 10843: fix crash that can occur when confirming hold if ReservesMaxPickUpDelay is undefined

Test plan:
1) set an empty string for the ReservesMaxPickUpDelay pref
2) place a hold on an item
3) check in the item
4) click on "Print and confirm"
5) an error occurs
> The 'days' parameter (undef) to DateTime::Duration::new was an 'undef'
6) apply the patch
7) repeat steps 1 to 4
8) the error does not occur anymore.

Signed-off-by: Srdjan <srdjan@catalyst.net.nz>
Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
An empty string didn't do it for me, I had to set the
variable for the systempreference to NULL. I am not sure
if this can happen when editing from the interface, but
this change should not have any ill side effects and it has
unit tests!

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
3.14.x
Jonathan Druart 11 years ago
committed by Galen Charlton
parent
commit
a9b564678e
  1. 2
      C4/Letters.pm
  2. 18
      t/Letters.t

2
C4/Letters.pm

@ -613,7 +613,7 @@ sub _parseletter {
my @waitingdate = split /-/, $values->{'waitingdate'};
my $dt = dt_from_string();
$dt->add( days => C4::Context->preference('ReservesMaxPickUpDelay') );
$dt->add( days => C4::Context->preference('ReservesMaxPickUpDelay') || 0);
$values->{'expirationdate'} = output_pref({ dt => $dt, dateonly => 1 });
$values->{'waitingdate'} = output_pref({ dt => dt_from_string( $values->{'waitingdate'} ), dateonly => 1 });

18
t/Letters.t

@ -3,11 +3,11 @@
# This Koha test module is a stub!
# Add more tests here!!!
use strict;
use warnings;
use Modern::Perl;
use DBI;
use Test::MockModule;
use Test::More tests => 2;
use Test::More tests => 4;
use t::lib::Mocks;
my $module = new Test::MockModule('C4::Context');
$module->mock(
'_new_dbh',
@ -32,3 +32,13 @@ $dbh->{mock_add_resultset} = $mock_letters;
my $letters = C4::Letters::GetLetters();
is( $letters->{ISBN}, 'book', 'HASH ref of ISBN is book' );
# Regression test for bug 10843
# $dt->add takes a scalar, not undef
my $letter;
t::lib::Mocks::mock_preference('ReservesMaxPickUpDelay', undef);
$letter = C4::Letters::_parseletter( undef, 'reserves', {waitingdate => "2013-01-01"} );
is( ref($letter), 'HASH');
t::lib::Mocks::mock_preference('ReservesMaxPickUpDelay', 1);
$letter = C4::Letters::_parseletter( undef, 'reserves', {waitingdate => "2013-01-01"} );
is( ref($letter), 'HASH');

Loading…
Cancel
Save