Take a copy instead of weakening in 5.8 leak workaround
[dbsrgits/DBIx-Class.git] / t / inflate / datetime_pg.t
1 use strict;
2 use warnings;
3
4 use Test::More;
5 use Test::Warn;
6 use DBIx::Class::Optional::Dependencies ();
7 use lib qw(t/lib);
8 use DBICTest;
9
10 plan skip_all => 'Test needs ' . DBIx::Class::Optional::Dependencies->req_missing_for ('test_dt_pg')
11   unless DBIx::Class::Optional::Dependencies->req_ok_for ('test_dt_pg');
12
13 require DBICTest::Schema;
14 DBICTest::Schema->load_classes('EventTZPg');
15
16 my $schema = DBICTest->init_schema();
17
18 warnings_are {
19   my $event = $schema->resultset("EventTZPg")->find(1);
20   $event->update({created_on => '2009-01-15 17:00:00+00'});
21   $event->discard_changes;
22   isa_ok($event->created_on, "DateTime") or diag $event->created_on;
23   is($event->created_on->time_zone->name, "America/Chicago", "Timezone changed");
24   # Time zone difference -> -6hours
25   is($event->created_on->iso8601, "2009-01-15T11:00:00", "Time with TZ correct");
26
27 # test 'timestamp without time zone'
28   my $dt = DateTime->from_epoch(epoch => time);
29   $dt->set_nanosecond(int 500_000_000);
30   $event->update({ts_without_tz => $dt});
31   $event->discard_changes;
32   isa_ok($event->ts_without_tz, "DateTime") or diag $event->created_on;
33   is($event->ts_without_tz, $dt, 'timestamp without time zone inflation');
34   is($event->ts_without_tz->microsecond, $dt->microsecond,
35     'timestamp without time zone microseconds survived');
36 } [], 'No warnings during DT manipulations';
37
38 done_testing;