Bug 15333: [QA Follow-up] Add few tests
authorMarcel de Rooy <m.de.rooy@rijksmuseum.nl>
Fri, 20 May 2016 08:14:28 +0000 (10:14 +0200)
committerBrendan Gallagher <brendan@bywatersolutions.com>
Wed, 25 May 2016 22:18:28 +0000 (22:18 +0000)
This report had no test plan and no unit tests.
Adding some lines to Holidays.t.
Added a trivial line move in Calendar.pm.

Test plan:
Run t/db_dependent/Holidays.t with and without cache.

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Tested with memcached, Cache::Memory and no cache (edit Cache.pm).

Signed-off-by: Brendan Gallagher <brendan@bywatersolutions.com>
Koha/Calendar.pm
t/db_dependent/Holidays.t

index 47e8d37..1321621 100644 (file)
@@ -54,12 +54,13 @@ sub _init {
 
 sub exception_holidays {
     my ( $self ) = @_;
-    my $dbh = C4::Context->dbh;
-    my $branch = $self->{branchcode};
+
     my $cache  = Koha::Cache->get_instance();
     my $cached = $cache->get_from_cache('exception_holidays');
     return $cached if $cached;
 
+    my $dbh = C4::Context->dbh;
+    my $branch = $self->{branchcode};
     my $exception_holidays_sth = $dbh->prepare(
 'SELECT day, month, year FROM special_holidays WHERE branchcode = ? AND isexception = 1'
     );
index 3080d5c..07e54cf 100755 (executable)
 
 use Modern::Perl;
 
-use Test::More tests => 10;
-use t::lib::TestBuilder;
+use Test::More tests => 15;
+use DateTime;
+use DateTime::TimeZone;
 
+use t::lib::TestBuilder;
 use C4::Context;
 use C4::Branch;
 use Koha::Database;
 use Koha::DateUtils;
 
-use DateTime;
-use DateTime::TimeZone;
 
 BEGIN {
     use_ok('Koha::Calendar');
@@ -119,6 +119,47 @@ C4::Calendar->new( branchcode => $branch_2 )->insert_single_holiday(
 is( Koha::Calendar->new( branchcode => $branch_2 )->is_holiday( $today ), 1, "Today is a holiday for $branch_2" );
 is( Koha::Calendar->new( branchcode => $branch_1 )->is_holiday( $today ), 0, "Today is not a holiday for $branch_1");
 
+# Few tests for exception holidays
+my ( $diff, $cal, $special );
+$dbh->do("DELETE FROM special_holidays");
+_add_exception( $today, $branch_1, 'Today' );
+$cal = Koha::Calendar->new( branchcode => $branch_1 );
+$special = $cal->exception_holidays;
+is( $special->count, 1, 'One exception holiday added' );
+
+my $tomorrow= dt_from_string();
+$tomorrow->add_duration( DateTime::Duration->new(days => 1) );
+_add_exception( $tomorrow, $branch_1, 'Tomorrow' );
+$cal = Koha::Calendar->new( branchcode => $branch_1 );
+$special = $cal->exception_holidays;
+is( $special->count, 2, 'Set of exception holidays contains two dates' );
+
+$diff = $today->delta_days( $special->min )->in_units('days');
+is( $diff, 0, 'Lowest exception holiday is today' );
+$diff = $tomorrow->delta_days( $special->max )->in_units('days');
+is( $diff, 0, 'Highest exception holiday is tomorrow' );
+
+C4::Calendar->new( branchcode => $branch_1 )->delete_holiday(
+    weekday => $tomorrow->day_of_week,
+    day     => $tomorrow->day,
+    month   => $tomorrow->month,
+    year    => $tomorrow->year,
+);
+$cal = Koha::Calendar->new( branchcode => $branch_1 );
+$special = $cal->exception_holidays;
+is( $special->count, 1, 'Set of exception holidays back to one' );
+
+sub _add_exception {
+    my ( $dt, $branch, $descr ) = @_;
+    C4::Calendar->new( branchcode => $branch )->insert_exception_holiday(
+        day         => $dt->day,
+        month       => $dt->month,
+        year        => $dt->year,
+        title       => $descr,
+        description => $descr,
+    );
+}
+
 $schema->storage->txn_rollback;
 
 1;