From 8a0d521af8265d2f74f972c49d0e47e3840ee643 Mon Sep 17 00:00:00 2001
From: Maxime Pelletier <maxime.pelletier@libeo.com>
Date: Wed, 24 Oct 2012 17:22:02 -0400
Subject: [PATCH] Bug 8966 Koha::Calendar::is_holiday truncates the date
* Create a local copy of the date instead of calling truncate directly on the date
* Add a test to properly test that the issue is fixed
---
Koha/Calendar.pm | 9 +++++----
t/Calendar.t | 6 +++++-
2 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/Koha/Calendar.pm b/Koha/Calendar.pm
index 2a2e062..d4ea77e 100644
--- a/Koha/Calendar.pm
+++ b/Koha/Calendar.pm
@@ -140,16 +140,17 @@ sub addDate {
sub is_holiday {
my ( $self, $dt ) = @_;
- my $dow = $dt->day_of_week;
+ my $localdt = $dt->clone();
+ my $dow = $localdt->day_of_week;
if ( $dow == 7 ) {
$dow = 0;
}
if ( $self->{weekly_closed_days}->[$dow] == 1 ) {
return 1;
}
- $dt->truncate( to => 'day' );
- my $day = $dt->day;
- my $month = $dt->month;
+ $localdt->truncate( to => 'day' );
+ my $day = $localdt->day;
+ my $month = $localdt->month;
if ( exists $self->{day_month_closed_days}->{$month}->{$day} ) {
return 1;
}
diff --git a/t/Calendar.t b/t/Calendar.t
index 7dc1f1b..80926eb 100755
--- a/t/Calendar.t
+++ b/t/Calendar.t
@@ -3,7 +3,7 @@
use strict;
use warnings;
use DateTime;
-use Test::More tests => 21;
+use Test::More tests => 23;
use Koha::DateUtils;
BEGIN {
@@ -103,6 +103,10 @@ $ret = $cal->addDate( $test_dt, 7, 'days' );
cmp_ok( $ret->ymd(), 'eq', '2012-07-30', 'Add 7 days Days mode' );
$cal->set_daysmode('Calendar');
+# see bugzilla #8966
+is( $cal->is_holiday($later_dt), 0, 'is holiday for the next test' );
+cmp_ok( $later_dt, 'eq', '2012-09-17T17:30:00', 'Date should be the same after is_holiday' );
+
# example tests for bug report
$cal->clear_weekly_closed_days();
--
1.7.2.5