From 1740f1408f5ca0fd3ac07a8191d341861dd51c08 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Tue, 18 Jun 2013 11:56:38 +0200 Subject: [PATCH] Bug 10487: UT: GetMaxPickupDate needs unit tests GetMaxPickupDate is introduced by bug 8367. It needs unit tests. $ prove t/db_dependent/Reserves.t should produce: t/db_dependent/Reserves.t .. 1/14 # # Creating biblio instance for testing. # Creating item instance for testing. ERROR: GetMaxPickupDate is called without reserve and without itemnumber ERROR: GetMaxPickupDate is called without reserve and without itemnumber t/db_dependent/Reserves.t .. 11/14 # Deleting item testing instance. # Deleting biblio testing instance. # Deleting borrower. t/db_dependent/Reserves.t .. ok All tests successful. Files=1, Tests=14, 1 wallclock secs ( 0.03 usr 0.00 sys + 0.42 cusr 0.06 csys = 0.51 CPU) Result: PASS Signed-off-by: Kyle M Hall --- t/db_dependent/Reserves.t | 47 +++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 45 insertions(+), 2 deletions(-) diff --git a/t/db_dependent/Reserves.t b/t/db_dependent/Reserves.t index 1e20318..9aeed0b 100755 --- a/t/db_dependent/Reserves.t +++ b/t/db_dependent/Reserves.t @@ -2,12 +2,17 @@ use strict; use warnings; -use C4::Branch; -use Test::More tests => 4; +use Test::More tests => 14; +use Test::MockModule; + use MARC::Record; +use DateTime::Duration; + use C4::Biblio; use C4::Items; +use C4::Branch; +use Koha::DateUtils; BEGIN { use FindBin; @@ -67,6 +72,44 @@ ok($status eq "Reserved", "CheckReserves Test 2"); ok($status eq "Reserved", "CheckReserves Test 3"); +# GetMaxPickupDate +my $item = GetItem( $itemnumber ); +is( C4::Reserves::GetMaxPickupDate(), undef, "GetMaxPickupDate return undef if no parameter is given" ); + +# There is no issuingrule defined +my $module = new Test::MockModule('C4::Circulation'); +$module->mock( + 'GetIssuingRule', + sub { + return; + } +); +# GetMaxPickupDate returns the same values for the 3 next calls (only reserve, only item and reserve + item) +is( C4::Reserves::GetMaxPickupDate($reserve), undef, "GetMaxPickupDate return undef if only reserve is given and waitingdate is not defined" ); +is( C4::Reserves::GetMaxPickupDate(undef, $item), undef, "GetMaxPickupDate return undef if only item is given and waitingdate is not defined" ); +is( C4::Reserves::GetMaxPickupDate($reserve, $item), undef, "GetMaxPickupDate return undef if reserve and item are given and waitingdate is not defined" ); + +# Set a maxpickupdate value +C4::Reserves::ModReserveAffect( $item->{itemnumber}, $borrowernumber ); +$reserve = C4::Reserves::GetReserveInfo( $borrowernumber, $biblionumber ); +is( C4::Reserves::GetMaxPickupDate($reserve), $reserve->{waitingdate} . 'T00:00:00', "GetMaxPickupDate return undef if only reserve is given and waitingdate is defined" ); +is( C4::Reserves::GetMaxPickupDate(undef, $item), $reserve->{waitingdate} . 'T00:00:00', "GetMaxPickupDate return undef if only item is given and waitingdate is defined" ); +is( C4::Reserves::GetMaxPickupDate($reserve, $item), $reserve->{waitingdate} . 'T00:00:00', "GetMaxPickupDate return undef if reserve and item are given and waitingdate is not defined" ); + +my $delay = 5; +$module->mock( + 'GetIssuingRule', + sub { + return {holdspickupdelay => $delay}; + } +); + +my $waitingdate_plus_5days = dt_from_string( $reserve->{waitingdate} )->add_duration(DateTime::Duration->new( days => $delay )); +is( C4::Reserves::GetMaxPickupDate($reserve), $waitingdate_plus_5days, "GetMaxPickupDate return undef if only reserve is given and waitingdate is defined" ); +is( C4::Reserves::GetMaxPickupDate(undef, $item), $waitingdate_plus_5days, "GetMaxPickupDate return undef if only item is given and waitingdate is defined" ); +is( C4::Reserves::GetMaxPickupDate($reserve, $item), $waitingdate_plus_5days, "GetMaxPickupDate return undef if reserve and item are given and waitingdate is not defined" ); + + # Teardown Test--------------------- # Delete item. diag("Deleting item testing instance."); -- 1.7.2.5