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=6557e074798c5148cc4d9bedbdfc551baf5d7b42;hpb=bc1cb85e84e6a30c75763edd478378a68009c722;p=dbsrgits%2FDBIx-Class-Schema-Loader.git diff --git a/t/lib/dbixcsl_common_tests.pm b/t/lib/dbixcsl_common_tests.pm index 6557e07..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); - 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"); + + @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 = (