if (not ($dsn && $user && $pass)) {
plan skip_all => 'Set $ENV{DBICTEST_ORA_DSN}, _USER and _PASS to run this test. ' .
- 'Warning: This test drops and creates a table called \'track\'';
+ 'Warning: This test drops and creates a table called \'event\'';
}
# DateTime::Format::Oracle needs this set
: 'TIMESTAMP'
;
-# Need to redefine the last_updated_on column
-my $col_metadata = $schema->class('Track')->column_info('last_updated_on');
-$schema->class('Track')->add_column( 'last_updated_on' => {
- data_type => 'date' });
-$schema->class('Track')->add_column( 'last_updated_at' => {
- data_type => $timestamp_datatype });
-
my $dbh = $schema->storage->dbh;
#$dbh->do("alter session set nls_timestamp_format = 'YYYY-MM-DD HH24:MI:SSXFF'");
eval {
- $dbh->do("DROP TABLE track");
+ $dbh->do("DROP TABLE event");
};
-$dbh->do("CREATE TABLE track (trackid NUMBER(12), cd NUMBER(12), position NUMBER(12), title VARCHAR(255), last_updated_on DATE, last_updated_at $timestamp_datatype)");
+$dbh->do(<<EOS);
+ CREATE TABLE event (
+ id number NOT NULL,
+ starts_at date NOT NULL,
+ created_on $timestamp_datatype NOT NULL,
+ varchar_date varchar(20),
+ varchar_datetime varchar(20),
+ skip_inflation date,
+ ts_without_tz date,
+ PRIMARY KEY (id)
+ )
+EOS
# TODO is in effect for the rest of the tests
local $TODO = 'FIXME - something odd is going on with Oracle < 9 datetime support'
lives_ok {
# insert a row to play with
-my $new = $schema->resultset('Track')->create({ trackid => 1, cd => 1, position => 1, title => 'Track1', last_updated_on => '06-MAY-07', last_updated_at => '2009-05-03 21:17:18.5' });
-is($new->trackid, 1, "insert sucessful");
+my $new = $schema->resultset('Event')->create({ id => 1, starts_at => '06-MAY-07', created_on => '2009-05-03 21:17:18.5' });
+is($new->id, 1, "insert sucessful");
-my $track = $schema->resultset('Track')->find( 1 );
+my $event = $schema->resultset('Event')->find( 1 );
-is( ref($track->last_updated_on), 'DateTime', "last_updated_on inflated ok");
+is( ref($event->starts_at), 'DateTime', "starts_at inflated ok");
-is( $track->last_updated_on->month, 5, "DateTime methods work on inflated column");
+is( $event->starts_at->month, 5, "DateTime methods work on inflated column");
-#note '$track->last_updated_at => ', $track->last_updated_at;
-is( ref($track->last_updated_at), 'DateTime', "last_updated_at inflated ok");
+is( ref($event->created_on), 'DateTime', "created_on inflated ok");
-is( $track->last_updated_at->nanosecond, 500_000_000, "DateTime methods work with nanosecond precision");
+is( $event->created_on->nanosecond, 500_000_000, "DateTime methods work with nanosecond precision");
my $dt = DateTime->now();
-$track->last_updated_on($dt);
-$track->last_updated_at($dt);
-$track->update;
+$event->starts_at($dt);
+$event->created_on($dt);
+$event->update;
-is( $track->last_updated_on->month, $dt->month, "deflate ok");
-is( int $track->last_updated_at->nanosecond, int $dt->nanosecond, "deflate ok with nanosecond precision");
+is( $event->starts_at->month, $dt->month, "deflate ok");
+is( int $event->created_on->nanosecond, int $dt->nanosecond, "deflate ok with nanosecond precision");
# test datetime_setup
my $timestamp = $dt->clone;
$timestamp->set_nanosecond( int 500_000_000 );
-$track = $schema->resultset('Track')->find( 1 );
-$track->update({ last_updated_on => $dt, last_updated_at => $timestamp });
+$event = $schema->resultset('Event')->find( 1 );
+$event->update({ starts_at => $dt, created_on => $timestamp });
-$track = $schema->resultset('Track')->find(1);
+$event = $schema->resultset('Event')->find(1);
-is( $track->last_updated_on, $dt, 'DateTime round-trip as DATE' );
-is( $track->last_updated_at, $timestamp, 'DateTime round-trip as TIMESTAMP' );
+is( $event->starts_at, $dt, 'DateTime round-trip as DATE' );
+is( $event->created_on, $timestamp, 'DateTime round-trip as TIMESTAMP' );
-is( int $track->last_updated_at->nanosecond, int 500_000_000,
+is( int $event->created_on->nanosecond, int 500_000_000,
'TIMESTAMP nanoseconds survived' );
} 'dateteime operations executed correctly';
# clean up our mess
END {
if($schema && (my $dbh = $schema->storage->dbh)) {
- $dbh->do("DROP TABLE track");
+ $dbh->do("DROP TABLE event");
}
undef $schema;
}