From 0c25bc631ec3bd12b9895ca56ba138585da69138 Mon Sep 17 00:00:00 2001
From: Kyle M Hall <kyle@bywatersolutions.com>
Date: Thu, 17 Apr 2014 14:33:16 -0400
Subject: [PATCH] Bug 8735 [QA Followup] - Add Unit Tests

---
 t/db_dependent/Holds.t |   38 +++++++++++++++++++++++++++++++++++++-
 1 files changed, 37 insertions(+), 1 deletions(-)

diff --git a/t/db_dependent/Holds.t b/t/db_dependent/Holds.t
index d72a81d..30b03a9 100755
--- a/t/db_dependent/Holds.t
+++ b/t/db_dependent/Holds.t
@@ -6,11 +6,12 @@ use t::lib::Mocks;
 use C4::Context;
 use C4::Branch;
 
-use Test::More tests => 29;
+use Test::More tests => 32;
 use MARC::Record;
 use C4::Biblio;
 use C4::Items;
 use C4::Members;
+use C4::Calendar;
 
 BEGIN {
     use FindBin;
@@ -286,6 +287,41 @@ C4::Context->set_preference( 'AllowHoldsOnDamagedItems', 0 );
 ok( !CanItemBeReserved( $borrowernumbers[0], $itemnumber), "Patron cannot reserve damaged item with AllowHoldsOnDamagedItems disabled" );
 ok( !defined( ( CheckReserves($itemnumber) )[1] ), "Hold cannot be trapped for damaged item with AllowHoldsOnDamagedItems disabled" );
 
+# Test CancelExpiredReserves
+C4::Context->set_preference('ExpireReservesMaxPickUpDelay', 1);
+C4::Context->set_preference('ReservesMaxPickUpDelay', 1);
+
+my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = localtime(time);
+$year += 1900;
+$mon += 1;
+$reserves = $dbh->selectall_arrayref('SELECT * FROM reserves', { Slice => {} });
+$reserve = $reserves->[0];
+my $calendar = C4::Calendar->new(branchcode => $reserve->{branchcode});
+$calendar->insert_single_holiday(
+    day         => $mday,
+    month       => $mon,
+    year        => $year,
+    title       => 'Test',
+    description => 'Test',
+);
+$reserve_id = $reserve->{reserve_id};
+$dbh->do("UPDATE reserves SET waitingdate = DATE_SUB( NOW(), INTERVAL 2 DAY ) WHERE reserve_id = ?", undef, $reserve_id );
+C4::Context->set_preference('ExpireReservesOnHolidays', 0);
+CancelExpiredReserves();
+my $count = $dbh->selectrow_array("SELECT COUNT(*) FROM reserves WHERE reserve_id = ?", undef, $reserve_id );
+is( $count, 1, "Waiting reserve beyond max pickup delay *not* canceled on holiday" );
+C4::Context->set_preference('ExpireReservesOnHolidays', 1);
+CancelExpiredReserves();
+$count = $dbh->selectrow_array("SELECT COUNT(*) FROM reserves WHERE reserve_id = ?", undef, $reserve_id );
+is( $count, 0, "Waiting reserve beyond max pickup delay canceled on holiday" );
+
+# Test expirationdate
+$reserve = $reserves->[1];
+$reserve_id = $reserve->{reserve_id};
+$dbh->do("UPDATE reserves SET expirationdate = DATE_SUB( NOW(), INTERVAL 1 DAY ) WHERE reserve_id = ?", undef, $reserve_id );
+CancelExpiredReserves();
+$count = $dbh->selectrow_array("SELECT COUNT(*) FROM reserves WHERE reserve_id = ?", undef, $reserve_id );
+is( $count, 0, "Reserve with manual expiration date canceled correctly" );
 
 # Helper method to set up a Biblio.
 sub create_helper_biblio {
-- 
1.7.2.5