Bug 8966 Koha::Calendar::is_holiday truncates the date
authorMaxime Pelletier <maxime.pelletier@libeo.com>
Wed, 24 Oct 2012 21:22:02 +0000 (17:22 -0400)
committerPaul Poulain <paul.poulain@biblibre.com>
Mon, 29 Oct 2012 17:27:04 +0000 (18:27 +0100)
* 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

Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
Signed-off-by: Paul Poulain <paul.poulain@biblibre.com>
Koha/Calendar.pm
t/Calendar.t

index 2a2e062..d4ea77e 100644 (file)
@@ -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;
     }
index 283300e..2b719b8 100755 (executable)
@@ -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();