The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl -T

=head1 PURPOSE

Test inserting in a table, with created/modified being real timestamps as
opposed to the default unixtime format.

=cut

use strict;
use warnings;

use lib 't/lib';

use Test::Exception;
use Test::FailWarnings -allow_deps => 1;
use Test::More tests => 4;
use TestSubclass::DateTable;


# SQLite and MySQL will have 2013-08-02 04:22:02, while PostgreSQL will format
# as 2013-08-02 04:22:02.161876.
my $date_pattern = qr/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/;

my $object_id;
subtest(
	'Insert test object.',
	sub
	{
		plan( tests => 2 );

		ok(
			my $object = TestSubclass::DateTable->new(),
			'Create new object.',
		);

		my $name = 'test_insert_timestamp_' . time();
		lives_ok(
			sub
			{
				$object->insert(
					{
						name => $name,
					}
				)
			},
			'Insert succeeds.',
		);

		$object_id = $object->id();
	}
);

ok(
	defined(
		my $object = TestSubclass::DateTable->new( { id => $object_id } )
	),
	'Retrieve the object.',
);

like(
	$object->get('created'),
	$date_pattern,
	'The created field is correctly formatted.',
);

like(
	$object->get('modified'),
	$date_pattern,
	'The modified field is correctly formatted.',
);