DBIx-Class-InflateColumn-DateTime-WithTimeZone
view release on metacpan or search on metacpan
t/10-conversion-sqlite.t view on Meta::CPAN
use strict;
use Test::More;
use Test::Fatal;
use Test::Warn;
use DateTime;
use lib qw( t/lib );
use Test::Schema;
my $schema = Test::Schema->connect('dbi:SQLite:dbname=:memory:', '', '');
$schema->deploy;
my $resultset = $schema->resultset('Tz');
my $result_source = $resultset->result_source;
is( $result_source->column_info('dt')->{timezone},
'UTC', 'timezone defaults to UTC' );
is( $result_source->column_info('dt_utc')->{timezone},
'UTC', 'explicit UTC timezone correct' );
my $now = DateTime->now( time_zone => 'America/Chicago' );
my $now_utc = $now->clone->set_time_zone('UTC');
my $row = $resultset->create(
{
id => 1,
dt => $now,
dt_utc => $now,
}
);
$row->discard_changes;
my $parser = $schema->storage->datetime_parser;
for my $col_name (qw{ dt dt_utc }) {
my $val = $row->$col_name;
my $info = $row->column_info($col_name);
isa_ok( $val, 'DateTime', "$col_name column" );
is( $val, $now . '', ' DateTime corect' );
is( $val->time_zone->name, 'America/Chicago', ' time zone correct' );
my $raw_str;
$schema->storage->dbh_do(
sub {
my ( $storage, $dbh ) = @_;
my $vals =
$dbh->selectcol_arrayref("SELECT $col_name FROM tz WHERE id = 1");
$raw_str = $vals->[0];
}
);
# all datetime values should be stored as UTC
my $expected_dt = $parser->format_datetime($now_utc);
is( $raw_str, $expected_dt, "$col_name column raw value correct" )
or diag "database datetime: $raw_str";
}
my $dt_null;
( run in 1.171 second using v1.01-cache-2.11-cpan-54e63673c56 )