|
Lines 17-50
Link Here
|
| 17 |
|
17 |
|
| 18 |
use Modern::Perl; |
18 |
use Modern::Perl; |
| 19 |
|
19 |
|
| 20 |
use Test::More; |
20 |
use Test::More tests => 38; |
| 21 |
use Test::MockModule; |
21 |
use Test::MockModule; |
| 22 |
|
22 |
|
| 23 |
use DateTime; |
23 |
use DateTime; |
| 24 |
use DateTime::Duration; |
24 |
use DateTime::Duration; |
| 25 |
use Koha::Caches; |
25 |
use Koha::Caches; |
|
|
26 |
use Koha::Calendar; |
| 27 |
use Koha::Database; |
| 26 |
use Koha::DateUtils qw( dt_from_string ); |
28 |
use Koha::DateUtils qw( dt_from_string ); |
| 27 |
|
29 |
|
| 28 |
use t::lib::Mocks; |
30 |
use t::lib::Mocks; |
|
|
31 |
use t::lib::TestBuilder; |
| 29 |
|
32 |
|
| 30 |
use Module::Load::Conditional qw/check_install/; |
33 |
my $builder = t::lib::TestBuilder->new; |
| 31 |
|
34 |
my $schema = Koha::Database->new->schema; |
| 32 |
BEGIN { |
35 |
$schema->storage->txn_begin; |
| 33 |
if ( check_install( module => 'Test::DBIx::Class' ) ) { |
|
|
| 34 |
plan tests => 40; |
| 35 |
} else { |
| 36 |
plan skip_all => "Need Test::DBIx::Class" |
| 37 |
} |
| 38 |
} |
| 39 |
|
| 40 |
use_ok('Koha::Calendar'); |
| 41 |
|
| 42 |
use Test::DBIx::Class; |
| 43 |
|
| 44 |
my $db = Test::MockModule->new('Koha::Database'); |
| 45 |
$db->mock( |
| 46 |
_new_schema => sub { return Schema(); } |
| 47 |
); |
| 48 |
|
36 |
|
| 49 |
# We need to mock the C4::Context->preference method for |
37 |
# We need to mock the C4::Context->preference method for |
| 50 |
# simplicity and re-usability of the session definition. Any |
38 |
# simplicity and re-usability of the session definition. Any |
|
Lines 57-89
$module_context->mock(
Link Here
|
| 57 |
} |
45 |
} |
| 58 |
); |
46 |
); |
| 59 |
|
47 |
|
| 60 |
fixtures_ok [ |
48 |
my $mpl = $builder->build_object({ class => 'Koha::Libraries' })->branchcode; |
| 61 |
# weekly holidays |
49 |
my $cpl = $builder->build_object({ class => 'Koha::Libraries' })->branchcode; |
| 62 |
RepeatableHoliday => [ |
50 |
my $rows = [ # add weekly holidays |
| 63 |
[ qw( branchcode day month weekday title description) ], |
51 |
{ branchcode => $mpl, weekday => 0 }, # sundays |
| 64 |
[ 'MPL', undef, undef, 0, '', '' ], # sundays |
52 |
{ branchcode => $mpl, weekday => 6 }, # saturdays |
| 65 |
[ 'MPL', undef, undef, 6, '', '' ],# saturdays |
53 |
{ branchcode => $mpl, day => 1, month => 1 }, # new year's day |
| 66 |
[ 'MPL', 1, 1, undef, '', ''], # new year's day |
54 |
{ branchcode => $mpl, day => 25, month => 12 }, # chrismas |
| 67 |
[ 'MPL', 25, 12, undef, '', ''], # chrismas |
55 |
]; |
| 68 |
], |
56 |
$schema->resultset('RepeatableHoliday')->delete_all; |
| 69 |
# exception holidays |
57 |
$schema->resultset('RepeatableHoliday')->create({ %$_, description => q{} }) for @$rows; |
| 70 |
SpecialHoliday => [ |
58 |
|
| 71 |
[qw( branchcode day month year title description isexception )], |
59 |
$rows = [ # exception holidays |
| 72 |
[ 'MPL', 11, 11, 2012, '', '', 1 ], # sunday exception |
60 |
{ branchcode => $mpl, day => 11, month => 11, year => 2012, isexception => 1 }, # sunday exception |
| 73 |
[ 'MPL', 1, 6, 2011, '', '', 0 ], |
61 |
{ branchcode => $mpl, day => 1, month => 6, year => 2011, isexception => 0 }, |
| 74 |
[ 'MPL', 4, 7, 2012, '', '', 0 ], |
62 |
{ branchcode => $mpl, day => 4, month => 7, year => 2012, isexception => 0 }, |
| 75 |
[ 'CPL', 6, 8, 2012, '', '', 0 ], |
63 |
{ branchcode => $cpl, day => 6, month => 8, year => 2012, isexception => 0 }, |
| 76 |
[ 'MPL', 7, 7, 2012, '', '', 1 ], # holiday exception |
64 |
{ branchcode => $mpl, day => 7, month => 7, year => 2012, isexception => 1 }, # holiday exception |
| 77 |
[ 'MPL', 7, 7, 2012, '', '', 0 ], # holiday |
65 |
{ branchcode => $mpl, day => 7, month => 7, year => 2012, isexception => 0 }, # holiday |
| 78 |
], |
66 |
]; |
| 79 |
], "add fixtures"; |
67 |
$schema->resultset('SpecialHoliday')->delete_all; |
|
|
68 |
$schema->resultset('SpecialHoliday')->create({ %$_, description => q{} }) for @$rows; |
| 80 |
|
69 |
|
| 81 |
my $cache = Koha::Caches->get_instance(); |
70 |
my $cache = Koha::Caches->get_instance(); |
| 82 |
$cache->clear_from_cache('MPL_holidays'); |
71 |
$cache->clear_from_cache('MPL_holidays'); |
| 83 |
$cache->clear_from_cache('CPL_holidays'); |
72 |
$cache->clear_from_cache('CPL_holidays'); |
| 84 |
|
73 |
|
| 85 |
# 'MPL' branch is arbitrary, is not used at all but is needed for initialization |
74 |
# $mpl branch is arbitrary, is not used at all but is needed for initialization |
| 86 |
my $cal = Koha::Calendar->new( branchcode => 'MPL' ); |
75 |
my $cal = Koha::Calendar->new( branchcode => $mpl ); |
| 87 |
|
76 |
|
| 88 |
isa_ok( $cal, 'Koha::Calendar', 'Calendar class returned' ); |
77 |
isa_ok( $cal, 'Koha::Calendar', 'Calendar class returned' ); |
| 89 |
|
78 |
|
|
Lines 216-222
my $holiday_excepted = DateTime->new(
Link Here
|
| 216 |
|
205 |
|
| 217 |
{ ## 'Datedue' tests |
206 |
{ ## 'Datedue' tests |
| 218 |
|
207 |
|
| 219 |
$cal = Koha::Calendar->new( branchcode => 'MPL', days_mode => 'Datedue' ); |
208 |
$cal = Koha::Calendar->new( branchcode => $mpl, days_mode => 'Datedue' ); |
| 220 |
|
209 |
|
| 221 |
is($cal->addDuration( $dt, $one_day_dur, 'days' ), # tuesday |
210 |
is($cal->addDuration( $dt, $one_day_dur, 'days' ), # tuesday |
| 222 |
dt_from_string('2012-07-05','iso'), |
211 |
dt_from_string('2012-07-05','iso'), |
|
Lines 247-253
my $holiday_excepted = DateTime->new(
Link Here
|
| 247 |
|
236 |
|
| 248 |
{ ## 'Calendar' tests' |
237 |
{ ## 'Calendar' tests' |
| 249 |
|
238 |
|
| 250 |
$cal = Koha::Calendar->new( branchcode => 'MPL', days_mode => 'Calendar' ); |
239 |
$cal = Koha::Calendar->new( branchcode => $mpl, days_mode => 'Calendar' ); |
| 251 |
|
240 |
|
| 252 |
$dt = dt_from_string('2012-07-03','iso'); |
241 |
$dt = dt_from_string('2012-07-03','iso'); |
| 253 |
|
242 |
|
|
Lines 275-281
my $holiday_excepted = DateTime->new(
Link Here
|
| 275 |
|
264 |
|
| 276 |
{ ## 'Days' tests |
265 |
{ ## 'Days' tests |
| 277 |
|
266 |
|
| 278 |
$cal = Koha::Calendar->new( branchcode => 'MPL', days_mode => 'Days' ); |
267 |
$cal = Koha::Calendar->new( branchcode => $mpl, days_mode => 'Days' ); |
| 279 |
|
268 |
|
| 280 |
$dt = dt_from_string('2012-07-03','iso'); |
269 |
$dt = dt_from_string('2012-07-03','iso'); |
| 281 |
|
270 |
|
|
Lines 304-310
my $holiday_excepted = DateTime->new(
Link Here
|
| 304 |
} |
293 |
} |
| 305 |
|
294 |
|
| 306 |
{ |
295 |
{ |
| 307 |
$cal = Koha::Calendar->new( branchcode => 'CPL' ); |
296 |
$cal = Koha::Calendar->new( branchcode => $cpl ); |
| 308 |
is ( $cal->is_holiday($single_holiday), 0, 'Single holiday for MPL, not CPL' ); |
297 |
is ( $cal->is_holiday($single_holiday), 0, 'Single holiday for MPL, not CPL' ); |
| 309 |
is ( $cal->is_holiday($holiday_for_another_branch), 1, 'Holiday defined for CPL should be defined as an holiday' ); |
298 |
is ( $cal->is_holiday($holiday_for_another_branch), 1, 'Holiday defined for CPL should be defined as an holiday' ); |
| 310 |
} |
299 |
} |
|
Lines 314-324
subtest 'days_mode parameter' => sub {
Link Here
|
| 314 |
|
303 |
|
| 315 |
t::lib::Mocks::mock_preference('useDaysMode', 'Days'); |
304 |
t::lib::Mocks::mock_preference('useDaysMode', 'Days'); |
| 316 |
|
305 |
|
| 317 |
$cal = Koha::Calendar->new( branchcode => 'CPL', days_mode => 'Calendar' ); |
306 |
$cal = Koha::Calendar->new( branchcode => $cpl, days_mode => 'Calendar' ); |
| 318 |
is( $cal->{days_mode}, 'Calendar', q|If set, days_mode is correctly set|); |
307 |
is( $cal->{days_mode}, 'Calendar', q|If set, days_mode is correctly set|); |
| 319 |
}; |
308 |
}; |
| 320 |
|
309 |
|
| 321 |
END { |
310 |
$cache->clear_from_cache('MPL_holidays'); |
| 322 |
$cache->clear_from_cache('MPL_holidays'); |
311 |
$cache->clear_from_cache('CPL_holidays'); |
| 323 |
$cache->clear_from_cache('CPL_holidays'); |
312 |
$schema->storage->txn_rollback; |
| 324 |
}; |
|
|
| 325 |
- |
|
|