View | Details | Raw Unified | Return to bug 23974
Collapse All | Expand All

(-)a/t/db_dependent/Calendar.t (-39 / +47 lines)
Lines 17-23 Link Here
17
17
18
use Modern::Perl;
18
use Modern::Perl;
19
19
20
use Test::More tests => 6;
20
use Test::More tests => 3;
21
use t::lib::TestBuilder;
21
use t::lib::TestBuilder;
22
22
23
use DateTime;
23
use DateTime;
Lines 31-85 $schema->storage->txn_begin; Link Here
31
31
32
my $today = dt_from_string();
32
my $today = dt_from_string();
33
my $holiday_dt = $today->clone;
33
my $holiday_dt = $today->clone;
34
$holiday_dt->add(days => 15);
34
$holiday_dt->add(days => 3);
35
35
36
Koha::Caches->get_instance()->flush_all();
36
Koha::Caches->get_instance()->flush_all();
37
37
38
my $builder = t::lib::TestBuilder->new();
38
my $builder = t::lib::TestBuilder->new();
39
my $holiday = $builder->build({
39
my $library = $builder->build_object({ class => 'Koha::Libraries' });
40
    source => 'SpecialHoliday',
40
my $holiday = $builder->build(
41
    value => {
41
    {
42
        branchcode => 'LIB1',
42
        source => 'SpecialHoliday',
43
        day => $holiday_dt->day,
43
        value  => {
44
        month => $holiday_dt->month,
44
            branchcode  => $library->branchcode,
45
        year => $holiday_dt->year,
45
            day         => $holiday_dt->day,
46
        title => 'My holiday',
46
            month       => $holiday_dt->month,
47
        isexception => 0
47
            year        => $holiday_dt->year,
48
    },
48
            title       => 'My holiday',
49
});
49
            isexception => 0
50
50
        },
51
my $calendar = Koha::Calendar->new( branchcode => 'LIB1');
51
    }
52
my $forwarded_dt = $calendar->days_forward($today, 10);
52
);
53
53
54
my $expected = $today->clone;
54
my $calendar = Koha::Calendar->new( branchcode => $library->branchcode );
55
$expected->add(days => 10);
55
56
is($forwarded_dt->ymd, $expected->ymd, 'With no holiday on the perioddays_forward should add 10 days');
56
subtest 'days_forward' => sub {
57
57
58
$forwarded_dt = $calendar->days_forward($today, 20);
58
    plan tests => 4;
59
59
    my $forwarded_dt = $calendar->days_forward( $today, 2 );
60
$expected->add(days => 11);
60
    my $expected = $today->clone->add( days => 2 );
61
is($forwarded_dt->ymd, $expected->ymd, 'With holiday on the perioddays_forward should add 20 days + 1 day for holiday');
61
    is( $forwarded_dt->ymd, $expected->ymd, 'With no holiday on the perioddays_forward should add 2 days' );
62
62
63
$forwarded_dt = $calendar->days_forward($today, 0);
63
    $forwarded_dt = $calendar->days_forward( $today, 5 );
64
is($forwarded_dt->ymd, $today->ymd, '0 day should return start dt');
64
    $expected = $today->clone->add( days => 6 );
65
65
    is( $forwarded_dt->ymd, $expected->ymd, 'With holiday on the perioddays_forward should add 5 days + 1 day for holiday'
66
$forwarded_dt = $calendar->days_forward($today, -2);
66
    );
67
is($forwarded_dt->ymd, $today->ymd, 'negative day should return start dt');
67
68
    $forwarded_dt = $calendar->days_forward( $today, 0 );
69
    is( $forwarded_dt->ymd, $today->ymd, '0 day should return start dt' );
70
71
    $forwarded_dt = $calendar->days_forward( $today, -2 );
72
    is( $forwarded_dt->ymd, $today->ymd, 'negative day should return start dt' );
73
};
68
74
69
subtest 'crossing_DST' => sub {
75
subtest 'crossing_DST' => sub {
70
76
71
    plan tests => 3;
77
    plan tests => 3;
72
78
73
    my $tz = DateTime::TimeZone->new( name => 'America/New_York' );
79
    my $tz = DateTime::TimeZone->new( name => 'America/New_York' );
74
    my $start_date = dt_from_string( "2016-03-09 02:29:00",undef,$tz );
80
    my $start_date = dt_from_string( "2016-03-09 02:29:00", undef, $tz );
75
    my $end_date = dt_from_string( "2017-01-01 00:00:00", undef, $tz );
81
    my $end_date   = dt_from_string( "2017-01-01 00:00:00", undef, $tz );
76
    my $days_between = $calendar->days_between($start_date,$end_date);
82
    my $days_between = $calendar->days_between( $start_date, $end_date );
77
    is( $days_between->delta_days, 298, "Days calculated correctly" );
83
    is( $days_between->delta_days, 298, "Days calculated correctly" );
78
    $days_between = $calendar->days_between($end_date,$start_date);
84
    $days_between = $calendar->days_between( $end_date, $start_date );
79
    is( $days_between->delta_days, 298, "Swapping returns the same" );
85
    is( $days_between->delta_days, 298, "Swapping returns the same" );
80
    my $hours_between = $calendar->hours_between($start_date,$end_date);
86
    my $hours_between = $calendar->hours_between( $start_date, $end_date );
81
    is( $hours_between->delta_minutes, 298 * 24 * 60 - 149, "Hours (in minutes) calculated correctly" );
87
    is(
82
88
        $hours_between->delta_minutes,
89
        298 * 24 * 60 - 149,
90
        "Hours (in minutes) calculated correctly"
91
    );
83
};
92
};
84
93
85
$schema->storage->txn_rollback();
94
$schema->storage->txn_rollback();
86
- 

Return to bug 23974