From e6382d04ada91640ca1c5224df8e1beb0c929bc4 Mon Sep 17 00:00:00 2001 From: Julian Maurice Date: Tue, 2 Apr 2024 09:34:25 +0200 Subject: [PATCH] Bug 36486: Add tests for Koha::DateTime::Format::SQL Signed-off-by: Matt Blenkinsop Signed-off-by: Marcel de Rooy Signed-off-by: Katrin Fischer --- t/Koha/DateTime/Format/SQL.t | 84 ++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 t/Koha/DateTime/Format/SQL.t diff --git a/t/Koha/DateTime/Format/SQL.t b/t/Koha/DateTime/Format/SQL.t new file mode 100644 index 0000000000..8ae3f09c54 --- /dev/null +++ b/t/Koha/DateTime/Format/SQL.t @@ -0,0 +1,84 @@ +#!/usr/bin/perl + +use Modern::Perl; +use DateTime::TimeZone; +use Test::Exception; +use Test::MockModule; +use Test::More; + +BEGIN { use_ok('Koha::DateTime::Format::SQL'); } + +my $local_timezone = DateTime::TimeZone->new( name => 'local' ); +my $koha_config_mock = Test::MockModule->new('Koha::Config'); +my $config = { timezone => '' }; +$koha_config_mock->mock('get', sub { $config->{$_[1]} }); + +subtest 'normal datetime, no timezone configured' => sub { + plan tests => 7; + + $config->{timezone} = ''; + $Koha::DateTime::Format::SQL::timezone = undef; + + my $dt = Koha::DateTime::Format::SQL->parse_datetime('2024-01-02 10:11:12'); + + is( $dt->year, 2024 ); + is( $dt->month, 1 ); + is( $dt->day, 2 ); + is( $dt->hour, 10 ); + is( $dt->minute, 11 ); + is( $dt->second, 12 ); + is( $dt->time_zone->name, $local_timezone->name ); +}; + +subtest 'normal datetime, with timezone configured' => sub { + plan tests => 7; + + $config->{timezone} = 'Pacific/Auckland'; + $Koha::DateTime::Format::SQL::timezone = undef; + + my $dt = Koha::DateTime::Format::SQL->parse_datetime('2024-01-02 10:11:12'); + + is( $dt->year, 2024 ); + is( $dt->month, 1 ); + is( $dt->day, 2 ); + is( $dt->hour, 10 ); + is( $dt->minute, 11 ); + is( $dt->second, 12 ); + is( $dt->time_zone->name, 'Pacific/Auckland' ); +}; + +subtest 'infinite datetime, no timezone configured' => sub { + plan tests => 7; + + $config->{timezone} = ''; + $Koha::DateTime::Format::SQL::timezone = undef; + + my $dt = Koha::DateTime::Format::SQL->parse_datetime('9999-01-02 10:11:12'); + + is( $dt->year, 9999 ); + is( $dt->month, 1 ); + is( $dt->day, 2 ); + is( $dt->hour, 10 ); + is( $dt->minute, 11 ); + is( $dt->second, 12 ); + is( $dt->time_zone->name, 'floating' ); +}; + +subtest 'normal datetime, with timezone configured' => sub { + plan tests => 7; + + $config->{timezone} = 'Pacific/Auckland'; + $Koha::DateTime::Format::SQL::timezone = undef; + + my $dt = Koha::DateTime::Format::SQL->parse_datetime('9999-01-02 10:11:12'); + + is( $dt->year, 9999 ); + is( $dt->month, 1 ); + is( $dt->day, 2 ); + is( $dt->hour, 10 ); + is( $dt->minute, 11 ); + is( $dt->second, 12 ); + is( $dt->time_zone->name, 'floating' ); +}; + +done_testing; -- 2.39.5