X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Flib%2Fdbixcsl_common_tests.pm;h=ab6d8cb9f94dd4198def3466a298e33be7bec9c0;hb=a60e0f45aec9bb5f08951f73f0082f6e526bb1ef;hp=283805d37a2f968e1e5f6e2dd5670700796207ca;hpb=4f19ef97a87c61eab5e67c0225a62e73d5a9f99b;p=dbsrgits%2FDBIx-Class-Schema-Loader.git diff --git a/t/lib/dbixcsl_common_tests.pm b/t/lib/dbixcsl_common_tests.pm index 283805d..ab6d8cb 100644 --- a/t/lib/dbixcsl_common_tests.pm +++ b/t/lib/dbixcsl_common_tests.pm @@ -4,6 +4,7 @@ use strict; use warnings; use Test::More; +use Test::Exception; use DBIx::Class::Schema::Loader; use Class::Unload; use File::Path; @@ -87,7 +88,7 @@ sub run_tests { my $extra_count = $self->{extra}{count} || 0; - plan tests => @connect_info * (176 + $extra_count + ($self->{data_type_tests}{test_count} || 0)); + plan tests => @connect_info * (178 + $extra_count + ($self->{data_type_tests}{test_count} || 0)); foreach my $info_idx (0..$#connect_info) { my $info = $connect_info[$info_idx]; @@ -428,8 +429,8 @@ sub test_schema { 'constant integer default', ); - is( - $class35->column_info('a_double')->{default_value}, 10.555, + cmp_ok( + $class35->column_info('a_double')->{default_value}, '==', 10.555, 'constant numeric default', ); @@ -861,7 +862,7 @@ sub test_schema { } # rescan and norewrite test - SKIP: { + { my @statements_rescan = ( qq{ CREATE TABLE loader_test30 ( @@ -890,6 +891,7 @@ sub test_schema { my $before_digest = $digest->digest; + $conn->storage->disconnect; # needed for Firebird and Informix my $dbh = $self->dbconnect(1); { @@ -903,7 +905,6 @@ sub test_schema { } $dbh->disconnect; - $conn->storage->disconnect; # needed for Firebird sleep 1; @@ -924,13 +925,28 @@ sub test_schema { my $rsobj30 = $conn->resultset('LoaderTest30'); isa_ok($rsobj30, 'DBIx::Class::ResultSet'); - skip 'no rels', 2 if $self->{skip_rels}; + SKIP: { + skip 'no rels', 2 if $self->{skip_rels}; + + my $obj30 = $rsobj30->find(123); + isa_ok( $obj30->loader_test2, $class2); + + ok($rsobj30->result_source->column_info('loader_test2')->{is_foreign_key}, + 'Foreign key detected'); + } + + $conn->storage->disconnect; # for Firebird + $conn->storage->dbh->do("DROP TABLE loader_test30"); - my $obj30 = $rsobj30->find(123); - isa_ok( $obj30->loader_test2, $class2); + @new = do { + local $SIG{__WARN__} = sub {}; + $conn->rescan; + }; + is_deeply(\@new, [], 'no new tables on rescan'); - ok($rsobj30->result_source->column_info('loader_test2')->{is_foreign_key}, - 'Foreign key detected'); + throws_ok { $conn->resultset('LoaderTest30') } + qr/Can't find source/, + 'source unregistered for dropped table after rescan'; } $self->test_data_types($conn); @@ -1390,9 +1406,16 @@ sub create { }, $make_auto_inc->(qw/loader_test11 id11/), - (q{ ALTER TABLE loader_test10 ADD CONSTRAINT } . - q{ loader_test11_fk FOREIGN KEY (loader_test11) } . - q{ REFERENCES loader_test11 (id11) }), + (lc($self->{vendor}) ne 'informix' ? + (q{ ALTER TABLE loader_test10 ADD CONSTRAINT loader_test11_fk } . + q{ FOREIGN KEY (loader_test11) } . + q{ REFERENCES loader_test11 (id11) }) + : + (q{ ALTER TABLE loader_test10 ADD CONSTRAINT } . + q{ FOREIGN KEY (loader_test11) } . + q{ REFERENCES loader_test11 (id11) } . + q{ CONSTRAINT loader_test11_fk }) + ), ); @statements_advanced_sqlite = ( @@ -1653,7 +1676,7 @@ sub setup_data_type_tests { my %seen_col_names; while (my ($col_def, $expected_info) = each %$types) { - (my $type_alias = lc($col_def)) =~ s/\( ([^)]+) \)//xg; + (my $type_alias = $col_def) =~ s/\( ([^)]+) \)//xg; my $size = $1; $size = '' unless defined $size; @@ -1680,7 +1703,10 @@ sub setup_data_type_tests { $col_name .= "_sz_$size_name"; } - $col_name .= "_$seen_col_names{$col_name}" if $seen_col_names{$col_name}++; + # XXX would be better to check _loader->preserve_case + $col_name = lc $col_name; + + $col_name .= '_' . $seen_col_names{$col_name} if $seen_col_names{$col_name}++; $ddl .= " $col_name $col_def,\n";