|
Lines 1-12
Link Here
|
| 1 |
#!/usr/bin/env perl |
1 |
#!/usr/bin/env perl |
| 2 |
|
2 |
|
| 3 |
use strict; |
3 |
use Modern::Perl; |
| 4 |
use warnings; |
|
|
| 5 |
use DateTime; |
4 |
use DateTime; |
| 6 |
use DateTime::Duration; |
5 |
use DateTime::Duration; |
| 7 |
use Test::More tests => 34; |
6 |
use Test::More tests => 35; |
| 8 |
use Test::MockModule; |
7 |
use Test::MockModule; |
| 9 |
use DBD::Mock; |
|
|
| 10 |
use Koha::Cache; |
8 |
use Koha::Cache; |
| 11 |
use Koha::DateUtils; |
9 |
use Koha::DateUtils; |
| 12 |
|
10 |
|
|
Lines 17-36
BEGIN {
Link Here
|
| 17 |
# Remove when no longer used |
15 |
# Remove when no longer used |
| 18 |
#use_ok('C4::Calendar'); # not used anymore? |
16 |
#use_ok('C4::Calendar'); # not used anymore? |
| 19 |
} |
17 |
} |
|
|
18 |
use Test::DBIx::Class { |
| 19 |
schema_class => 'Koha::Schema', |
| 20 |
connect_info => ['dbi:SQLite:dbname=:memory:','',''], |
| 21 |
connect_opts => { name_sep => '.', quote_char => '`', }, |
| 22 |
fixture_class => '::Populate', |
| 23 |
}, 'Biblio' ; |
| 24 |
|
| 25 |
sub fixtures { |
| 26 |
my ( $data ) = @_; |
| 27 |
fixtures_ok [ |
| 28 |
Biblio => [ |
| 29 |
[ qw/ biblionumber datecreated timestamp / ], |
| 30 |
@$data, |
| 31 |
], |
| 32 |
], 'add fixtures'; |
| 33 |
} |
| 20 |
|
34 |
|
| 21 |
my $module_context = new Test::MockModule('C4::Context'); |
35 |
my $db = Test::MockModule->new('Koha::Database'); |
| 22 |
$module_context->mock( |
36 |
$db->mock( |
| 23 |
'_new_dbh', |
37 |
_new_schema => sub { return Schema(); } |
| 24 |
sub { |
|
|
| 25 |
my $dbh = DBI->connect( 'DBI:Mock:', '', '' ) |
| 26 |
|| die "Cannot create handle: $DBI::errstr\n"; |
| 27 |
return $dbh; |
| 28 |
} |
| 29 |
); |
38 |
); |
| 30 |
|
39 |
|
| 31 |
# We need to mock the C4::Context->preference method for |
40 |
# We need to mock the C4::Context->preference method for |
| 32 |
# simplicity and re-usability of the session definition. Any |
41 |
# simplicity and re-usability of the session definition. Any |
| 33 |
# syspref fits for syspref-agnostic tests. |
42 |
# syspref fits for syspref-agnostic tests. |
|
|
43 |
my $module_context = new Test::MockModule('C4::Context'); |
| 34 |
$module_context->mock( |
44 |
$module_context->mock( |
| 35 |
'preference', |
45 |
'preference', |
| 36 |
sub { |
46 |
sub { |
|
Lines 38-107
$module_context->mock(
Link Here
|
| 38 |
} |
48 |
} |
| 39 |
); |
49 |
); |
| 40 |
|
50 |
|
| 41 |
SKIP: { |
51 |
fixtures_ok [ |
| 42 |
|
52 |
# weekly holidays |
| 43 |
skip "DBD::Mock is too old", 33 |
53 |
RepeatableHoliday => [ |
| 44 |
unless $DBD::Mock::VERSION >= 1.45; |
54 |
[ qw( branchcode day month weekday title description) ], |
| 45 |
|
55 |
[ 'MPL', undef, undef, 0, '', '' ], # sundays |
| 46 |
my $holidays_session = DBD::Mock::Session->new('holidays_session' => ( |
56 |
[ 'MPL', undef, undef, 6, '', '' ],# saturdays |
| 47 |
{ # weekly holidays |
57 |
[ 'MPL', 1, 1, undef, '', ''], # new year's day |
| 48 |
statement => "SELECT weekday FROM repeatable_holidays WHERE branchcode = ? AND weekday IS NOT NULL", |
58 |
[ 'MPL', 25, 12, undef, '', ''], # chrismas |
| 49 |
results => [ |
59 |
], |
| 50 |
['weekday'], |
60 |
# exception holidays |
| 51 |
[0], # sundays |
61 |
SpecialHoliday => [ |
| 52 |
[6] # saturdays |
62 |
[qw( branchcode day month year title description isexception )], |
| 53 |
] |
63 |
[ 'MPL', 11, 11, 2012, '', '', 1 ], # sunday exception |
| 54 |
}, |
64 |
[ 'MPL', 1, 6, 2011, '', '', 0 ], |
| 55 |
{ # day and month repeatable holidays |
65 |
[ 'MPL', 4, 7, 2012, '', '', 0 ], |
| 56 |
statement => "SELECT day, month FROM repeatable_holidays WHERE branchcode = ? AND weekday IS NULL", |
66 |
], |
| 57 |
results => [ |
67 |
], "add fixtures"; |
| 58 |
[ 'month', 'day' ], |
|
|
| 59 |
[ 1, 1 ], # new year's day |
| 60 |
[12,25] # christmas |
| 61 |
] |
| 62 |
}, |
| 63 |
{ # exception holidays |
| 64 |
statement => "SELECT day, month, year FROM special_holidays WHERE branchcode = ? AND isexception = 1", |
| 65 |
results => [ |
| 66 |
[ 'day', 'month', 'year' ], |
| 67 |
[ 11, 11, 2012 ] # sunday exception |
| 68 |
] |
| 69 |
}, |
| 70 |
|
| 71 |
{ # single holidays1 |
| 72 |
statement => "SELECT distinct(branchcode) FROM special_holidays", |
| 73 |
results => [ |
| 74 |
[ 'branchcode' ], |
| 75 |
[ 'MPL'] |
| 76 |
] |
| 77 |
}, |
| 78 |
|
| 79 |
{ # single holidays2 |
| 80 |
statement => "SELECT day, month, year FROM special_holidays WHERE branchcode = ? AND isexception = 0", |
| 81 |
results => [ |
| 82 |
[ 'day', 'month', 'year' ], |
| 83 |
[ 1, 6, 2011 ], # single holiday |
| 84 |
[ 4, 7, 2012 ] |
| 85 |
] |
| 86 |
}, |
| 87 |
)); |
| 88 |
|
| 89 |
# Initialize the global $dbh variable |
| 90 |
my $dbh = C4::Context->dbh(); |
| 91 |
# Apply the mock session |
| 92 |
$dbh->{ mock_session } = $holidays_session; |
| 93 |
|
| 94 |
|
68 |
|
| 95 |
my $cache = Koha::Cache->get_instance(); |
69 |
my $cache = Koha::Cache->get_instance(); |
| 96 |
$cache->clear_from_cache( 'single_holidays') ; |
70 |
$cache->clear_from_cache( 'single_holidays') ; |
| 97 |
|
71 |
|
| 98 |
|
|
|
| 99 |
# 'MPL' branch is arbitrary, is not used at all but is needed for initialization |
72 |
# 'MPL' branch is arbitrary, is not used at all but is needed for initialization |
| 100 |
my $cal = Koha::Calendar->new( branchcode => 'MPL' ); |
73 |
my $cal = Koha::Calendar->new( branchcode => 'MPL' ); |
| 101 |
|
74 |
|
| 102 |
isa_ok( $cal, 'Koha::Calendar', 'Calendar class returned' ); |
75 |
isa_ok( $cal, 'Koha::Calendar', 'Calendar class returned' ); |
| 103 |
|
76 |
|
| 104 |
|
|
|
| 105 |
my $saturday = DateTime->new( |
77 |
my $saturday = DateTime->new( |
| 106 |
year => 2012, |
78 |
year => 2012, |
| 107 |
month => 11, |
79 |
month => 11, |
|
Lines 224-232
my $day_after_christmas = DateTime->new(
Link Here
|
| 224 |
return 'Datedue'; |
196 |
return 'Datedue'; |
| 225 |
} |
197 |
} |
| 226 |
); |
198 |
); |
| 227 |
# rewind dbh session |
|
|
| 228 |
$holidays_session->reset; |
| 229 |
|
| 230 |
|
199 |
|
| 231 |
$cal = Koha::Calendar->new( branchcode => 'MPL' ); |
200 |
$cal = Koha::Calendar->new( branchcode => 'MPL' ); |
| 232 |
|
201 |
|
|
Lines 266-273
my $day_after_christmas = DateTime->new(
Link Here
|
| 266 |
return 'Calendar'; |
235 |
return 'Calendar'; |
| 267 |
} |
236 |
} |
| 268 |
); |
237 |
); |
| 269 |
# rewind dbh session |
|
|
| 270 |
$holidays_session->reset; |
| 271 |
|
238 |
|
| 272 |
$cal = Koha::Calendar->new( branchcode => 'MPL' ); |
239 |
$cal = Koha::Calendar->new( branchcode => 'MPL' ); |
| 273 |
|
240 |
|
|
Lines 303-310
my $day_after_christmas = DateTime->new(
Link Here
|
| 303 |
return 'Days'; |
270 |
return 'Days'; |
| 304 |
} |
271 |
} |
| 305 |
); |
272 |
); |
| 306 |
# rewind dbh session |
|
|
| 307 |
$holidays_session->reset; |
| 308 |
|
273 |
|
| 309 |
$cal = Koha::Calendar->new( branchcode => 'MPL' ); |
274 |
$cal = Koha::Calendar->new( branchcode => 'MPL' ); |
| 310 |
|
275 |
|
|
Lines 333-337
my $day_after_christmas = DateTime->new(
Link Here
|
| 333 |
'==', 40, 'Test parameter order not relevant (Days)' ); |
298 |
'==', 40, 'Test parameter order not relevant (Days)' ); |
| 334 |
|
299 |
|
| 335 |
} |
300 |
} |
| 336 |
|
|
|
| 337 |
} # End SKIP block |
| 338 |
- |