1use strict;
2use warnings;
3
4use Test::More;
5use lib qw(t/lib);
6use DBICTest;
7
8{
9  local $SIG{__WARN__} = sub { warn @_ if $_[0] !~ /extra \=\> .+? has been deprecated/ };
10  DBICTest::Schema->load_classes('EventTZPg');
11}
12
13eval { require DateTime::Format::Pg };
14plan $@
15  ? ( skip_all =>  'Need DateTime::Format::Pg for timestamp inflation tests')
16  : ( tests => 6 )
17;
18
19
20my $schema = DBICTest->init_schema();
21
22{
23  my $event = $schema->resultset("EventTZPg")->find(1);
24  $event->update({created_on => '2009-01-15 17:00:00+00'});
25  $event->discard_changes;
26  isa_ok($event->created_on, "DateTime") or diag $event->created_on;
27  is($event->created_on->time_zone->name, "America/Chicago", "Timezone changed");
28  # Time zone difference -> -6hours
29  is($event->created_on->iso8601, "2009-01-15T11:00:00", "Time with TZ correct");
30
31# test 'timestamp without time zone'
32  my $dt = DateTime->from_epoch(epoch => time);
33  $dt->set_nanosecond(int 500_000_000);
34  $event->update({ts_without_tz => $dt});
35  $event->discard_changes;
36  isa_ok($event->ts_without_tz, "DateTime") or diag $event->created_on;
37  is($event->ts_without_tz, $dt, 'timestamp without time zone inflation');
38  is($event->ts_without_tz->microsecond, $dt->microsecond,
39    'timestamp without time zone microseconds survived');
40}
41