# Optional extra tables and tests
$self->{extra} ||= {};
+ # Not all DBS do SQL-standard CURRENT_TIMESTAMP
+ $self->{default_function} ||= "CURRENT_TIMESTAMP";
+ $self->{default_function_def} ||= "TIMESTAMP DEFAULT $self->{default_function}";
+
return bless $self => $class;
}
sub run_tests {
my $self = shift;
- plan tests => 140 + ($self->{extra}->{count} || 0);
+ plan tests => 145 + ($self->{extra}->{count} || 0);
$self->create();
my %loader_opts = (
constraint =>
- qr/^(?:\S+\.)?(?:$self->{vendor}_)?loader_test[0-9]+(?!.*_)/i,
+ qr/^(?:\S+\.)?(?:(?:$self->{vendor}|extra)_)?loader_test[0-9]+(?!.*_)/i,
relationships => 1,
additional_classes => 'TestAdditional',
additional_base_classes => 'TestAdditionalBase',
my $file_count;
find sub { return if -d; $file_count++ }, $DUMP_DIR;
- my $expected_count = 34;
+ my $expected_count = 35;
$expected_count += grep /CREATE (?:TABLE|VIEW)/i,
@{ $self->{extra}{create} || [] };
$expected_count -= grep /CREATE TABLE/, @statements_inline_rels
- if $self->{no_inline_rels};
+ if $self->{skip_rels} || $self->{no_inline_rels};
$expected_count -= grep /CREATE TABLE/, @statements_implicit_rels
- if $self->{no_implicit_rels};
+ if $self->{skip_rels} || $self->{no_implicit_rels};
+
+ $expected_count -= grep /CREATE TABLE/, ($self->{vendor} =~ /sqlite/ ? @statements_advanced_sqlite : @statements_advanced), @statements_reltests
+ if $self->{skip_rels};
is $file_count, $expected_count, 'correct number of files generated';
my $class24 = $classes->{LoAdEr_test24};
my $rsobj24 = $conn->resultset($moniker2);
+ my $moniker35 = $monikers->{loader_test35};
+ my $class35 = $classes->{loader_test35};
+ my $rsobj35 = $conn->resultset($moniker35);
+
isa_ok( $rsobj1, "DBIx::Class::ResultSet" );
isa_ok( $rsobj2, "DBIx::Class::ResultSet" );
isa_ok( $rsobj23, "DBIx::Class::ResultSet" );
isa_ok( $rsobj24, "DBIx::Class::ResultSet" );
+ isa_ok( $rsobj35, "DBIx::Class::ResultSet" );
my @columns_lt2 = $class2->columns;
is_deeply( \@columns_lt2, [ qw/id dat dat2/ ], "Column Ordering" );
my ($obj2) = $rsobj2->search({ dat => 'bbb' })->first;
is( $obj2->id, 2 );
+ is(
+ $class35->column_info('a_varchar')->{default_value}, 'foo',
+ 'constant character default',
+ );
+
+ is(
+ $class35->column_info('an_int')->{default_value}, 42,
+ 'constant integer default',
+ );
+
+ is(
+ $class35->column_info('a_double')->{default_value}, 10.555,
+ 'constant numeric default',
+ );
+
+ my $function_default = $class35->column_info('a_function')->{default_value};
+
+ isa_ok( $function_default, 'SCALAR', 'default_value for function default' );
+ is_deeply(
+ $function_default, \$self->{default_function},
+ 'default_value for function default is correct'
+ );
+
SKIP: {
skip $self->{skip_rels}, 96 if $self->{skip_rels};
ok($class10->column_info('loader_test11')->{is_foreign_key}, 'Foreign key detected');
ok($class11->column_info('loader_test10')->{is_foreign_key}, 'Foreign key detected');
- is($class11->column_info('message')->{default_value},'foo', 'Default value check');
my $obj10 = $rsobj10->create({ subject => 'xyzzy' });
DaT VARCHAR(32) NOT NULL UNIQUE
) $self->{innodb}
},
+
+ qq{
+ CREATE TABLE loader_test35 (
+ id INTEGER NOT NULL PRIMARY KEY,
+ a_varchar VARCHAR(100) DEFAULT 'foo',
+ an_int INTEGER DEFAULT 42,
+ a_double DOUBLE PRECISION DEFAULT 10.555,
+ a_function $self->{default_function_def}
+ ) $self->{innodb}
+ },
);
@statements_reltests = (
loader_test2
LOADER_TEST23
LoAdEr_test24
+ loader_test35
/;
my @tables_auto_inc = (
unless($self->{no_implicit_rels}) {
$dbh->do("DROP TABLE $_") for (@tables_implicit_rels);
}
- $dbh->do("DROP TABLE $_") for (@tables_rescan);
}
- $dbh->do("DROP TABLE $_") for (@tables);
+ $dbh->do("DROP TABLE $_") for (@tables, @tables_rescan);
$dbh->do($_) for map { $drop_auto_inc->(@$_) } @tables_auto_inc;
$dbh->disconnect;
}