X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F10_06sybase_common.t;h=fe110f6c9b367b2324c11e5d74daf068110c6a36;hb=4b5eca90f633645050d77e5d0c98d05a6cc37502;hp=bf7ed8f1550457dd1b8cbe39b20f422d4c4f0c39;hpb=c4a69b87bd3d3fdda08f05d363311a6e9d3fc0f7;p=dbsrgits%2FDBIx-Class-Schema-Loader.git diff --git a/t/10_06sybase_common.t b/t/10_06sybase_common.t index bf7ed8f..fe110f6 100644 --- a/t/10_06sybase_common.t +++ b/t/10_06sybase_common.t @@ -5,6 +5,7 @@ use Test::Exception; use Try::Tiny; use File::Path 'rmtree'; use DBIx::Class::Schema::Loader 'make_schema_at'; +use namespace::clean; use DBI (); use lib qw(t/lib); @@ -18,6 +19,8 @@ my $dsn = $ENV{DBICTEST_SYBASE_DSN} || ''; my $user = $ENV{DBICTEST_SYBASE_USER} || ''; my $password = $ENV{DBICTEST_SYBASE_PASS} || ''; +BEGIN { $ENV{DBIC_SYBASE_FREETDS_NOWARN} = 1 } + my ($schema, $databases_created); # for cleanup in END for extra tests my $tester = dbixcsl_common_tests->new( @@ -105,7 +108,7 @@ my $tester = dbixcsl_common_tests->new( }, ], drop => [ qw/sybase_loader_test1 sybase_loader_test2/ ], - count => 28 * 4, + count => 30 * 4, run => sub { $schema = shift; @@ -116,7 +119,7 @@ my $tester = dbixcsl_common_tests->new( $dbh->do('USE master'); } catch { - skip "these tests require the sysadmin role", 28 * 4; + skip "these tests require the sysadmin role", 30 * 4; }; try { @@ -124,7 +127,7 @@ my $tester = dbixcsl_common_tests->new( $dbh->do('CREATE DATABASE [dbicsl_test2]'); } catch { - skip "cannot create databases: $_", 28 * 4; + skip "cannot create databases: $_", 30 * 4; }; try { @@ -150,7 +153,7 @@ my $tester = dbixcsl_common_tests->new( $dbh->do("GRANT ALL TO dbicsl_user1"); } catch { - skip "cannot add logins: $_", 28 * 4; + skip "cannot add logins: $_", 30 * 4; }; my ($dbh1, $dbh2); @@ -184,11 +187,21 @@ EOF CREATE TABLE sybase_loader_test5 ( id INT IDENTITY PRIMARY KEY, value VARCHAR(100) NULL, - four_id INTEGER UNIQUE, + four_id INTEGER, + CONSTRAINT loader_test5_uniq UNIQUE (four_id), FOREIGN KEY (four_id) REFERENCES sybase_loader_test4 (id) ) EOF $dbh2->do(<<"EOF"); + CREATE TABLE sybase_loader_test5 ( + pk INT IDENTITY PRIMARY KEY, + value VARCHAR(100) NULL, + four_id INTEGER, + CONSTRAINT loader_test5_uniq UNIQUE (four_id), + FOREIGN KEY (four_id) REFERENCES [dbicsl_test1].dbicsl_user1.sybase_loader_test4 (id) + ) +EOF + $dbh2->do(<<"EOF"); CREATE TABLE sybase_loader_test6 ( id INT IDENTITY PRIMARY KEY, value VARCHAR(100) NULL, @@ -248,6 +261,8 @@ EOF [ $dsn, $user, $password ], ); + SybaseMultiSchema->storage->disconnect; + diag join "\n", @warns if @warns; is @warns, 0; @@ -280,7 +295,7 @@ EOF ok $row = $rs->create({ value => 'foo' }); } 'executed SQL on table in database one'; - $rel_info = try { $rsrc->relationship_info('sybase_loader_test5') }; + $rel_info = try { $rsrc->relationship_info('dbicsl_test1_sybase_loader_test5') }; is_deeply $rel_info->{cond}, { 'foreign.four_id' => 'self.id' @@ -293,7 +308,7 @@ EOF 'relationship in database one'; lives_and { - ok $rsrc = $test_schema->source('SybaseLoaderTest5'); + ok $rsrc = $test_schema->source('DbicslTest1SybaseLoaderTest5'); } 'got source for table in database one'; %uniqs = try { $rsrc->unique_constraints }; @@ -301,6 +316,11 @@ EOF is keys %uniqs, 2, 'got unique and primary constraint in database one'; + delete $uniqs{primary}; + + is_deeply ((values %uniqs)[0], ['four_id'], + 'correct unique constraint in database one'); + lives_and { ok $rsrc = $test_schema->source('SybaseLoaderTest6'); } 'got source for table in database two'; @@ -343,6 +363,11 @@ EOF is keys %uniqs, 2, 'got unique and primary constraint in database two'; + delete $uniqs{primary}; + + is_deeply ((values %uniqs)[0], ['six_id'], + 'correct unique constraint in database two'); + lives_and { ok $test_schema->source('SybaseLoaderTest6') ->has_relationship('sybase_loader_test4'); @@ -399,6 +424,7 @@ END { foreach my $table ('[dbicsl_test1].dbicsl_user1.sybase_loader_test8', '[dbicsl_test2].dbicsl_user2.sybase_loader_test7', '[dbicsl_test2].dbicsl_user2.sybase_loader_test6', + '[dbicsl_test2].dbicsl_user2.sybase_loader_test5', '[dbicsl_test1].dbicsl_user1.sybase_loader_test5', '[dbicsl_test1].dbicsl_user1.sybase_loader_test4') { try {