X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F10_04db2_common.t;h=4dd1936fde741656b030d0f94b4e0ad40a9d64ef;hb=f868218c0f44b1ca1c82f9c5125a0de45f7c88ba;hp=b86ca49051db6574965bd43fe12d6b51c168b140;hpb=5975bbe67547badcbf19b1eded170ca6beea301b;p=dbsrgits%2FDBIx-Class-Schema-Loader.git diff --git a/t/10_04db2_common.t b/t/10_04db2_common.t index b86ca49..4dd1936 100644 --- a/t/10_04db2_common.t +++ b/t/10_04db2_common.t @@ -4,6 +4,7 @@ use Test::More; use Test::Exception; use Try::Tiny; use File::Path 'rmtree'; +use DBIx::Class::Optional::Dependencies; use DBIx::Class::Schema::Loader 'make_schema_at'; use lib qw(t/lib); @@ -20,6 +21,9 @@ my $password = $ENV{DBICTEST_DB2_PASS} || ''; plan skip_all => 'You need to set the DBICTEST_DB2_DSN, _USER, and _PASS environment variables' unless ($dsn && $user); +plan skip_all => 'You need to install ' . DBIx::Class::Optional::Dependencies->req_missing_for ('rdbms_db2') + unless DBIx::Class::Optional::Dependencies->req_ok_for ('rdbms_db2'); + my ($schema, $schemas_created); # for cleanup in END for extra tests my $srv_ver = do { @@ -46,6 +50,8 @@ my $tester = dbixcsl_common_tests->new( null => '', preserve_case_mode_is_exclusive => 1, quote_char => '"', + default_is_deferrable => 1, + default_on_clause => 'NO ACTION', data_types => { # http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/admin/r0008483.htm # @@ -104,11 +110,41 @@ my $tester = dbixcsl_common_tests->new( # datalink => { data_type => 'datalink' }, }, extra => { - count => 30 * 2, + create => [ + # 4 through 8 are used for the multi-schema tests + q{ + create table db2_loader_test9 ( + id int generated by default as identity not null primary key + ) + }, + q{ + create table db2_loader_test10 ( + id int generated by default as identity not null primary key, + nine_id int, + foreign key (nine_id) references db2_loader_test9(id) + on delete set null on update restrict + ) + }, + ], + drop => [ qw/db2_loader_test9 db2_loader_test10/ ], + count => 4 + 30 * 2, run => sub { - SKIP: { - $schema = shift; + $schema = shift; + + # test on delete/update fk clause introspection + ok ((my $rel_info = $schema->source('Db2LoaderTest10')->relationship_info('nine')), + 'got rel info'); + + is $rel_info->{attrs}{on_delete}, 'SET NULL', + 'ON DELETE clause introspected correctly'; + is $rel_info->{attrs}{on_update}, 'RESTRICT', + 'ON UPDATE clause introspected correctly'; + + is $rel_info->{attrs}{is_deferrable}, 1, + 'DEFERRABLE defaults to 1'; + + SKIP: { my $dbh = $schema->storage->dbh; try { @@ -185,7 +221,6 @@ EOF { naming => 'current', db_schema => $db_schema, - moniker_parts => [qw/schema name/], dump_directory => EXTRA_DUMP_DIR, quiet => 1, }, @@ -204,7 +239,7 @@ EOF } 'connected test schema'; lives_and { - ok $rsrc = $test_schema->source('DbicslDashTestDb2LoaderTest4'); + ok $rsrc = $test_schema->source('Db2LoaderTest4'); } 'got source for table in schema name with dash'; is try { $rsrc->column_info('id')->{is_auto_increment} }, 1, @@ -217,7 +252,7 @@ EOF 'column in schema name with dash'; lives_and { - ok $rs = $test_schema->resultset('DbicslDashTestDb2LoaderTest4'); + ok $rs = $test_schema->resultset('Db2LoaderTest4'); } 'got resultset for table in schema name with dash'; lives_and { @@ -251,7 +286,7 @@ EOF 'correct unique constraint in schema name with dash'); lives_and { - ok $rsrc = $test_schema->source('DbicslDotTestDb2LoaderTest6'); + ok $rsrc = $test_schema->source('Db2LoaderTest6'); } 'got source for table in schema name with dot'; is try { $rsrc->column_info('id')->{is_auto_increment} }, 1, @@ -264,7 +299,7 @@ EOF 'column in schema name with dot introspected correctly'; lives_and { - ok $rs = $test_schema->resultset('DbicslDotTestDb2LoaderTest6'); + ok $rs = $test_schema->resultset('Db2LoaderTest6'); } 'got resultset for table in schema name with dot'; lives_and { @@ -284,7 +319,7 @@ EOF 'relationship in schema name with dot'; lives_and { - ok $rsrc = $test_schema->source('DbicslDotTestDb2LoaderTest7'); + ok $rsrc = $test_schema->source('Db2LoaderTest7'); } 'got source for table in schema name with dot'; %uniqs = try { $rsrc->unique_constraints }; @@ -298,22 +333,22 @@ EOF 'correct unique constraint in schema name with dot'); lives_and { - ok $test_schema->source('DbicslDotTestDb2LoaderTest6') + ok $test_schema->source('Db2LoaderTest6') ->has_relationship('db2_loader_test4'); } 'cross-schema relationship in multi-db_schema'; lives_and { - ok $test_schema->source('DbicslDashTestDb2LoaderTest4') + ok $test_schema->source('Db2LoaderTest4') ->has_relationship('db2_loader_test6s'); } 'cross-schema relationship in multi-db_schema'; lives_and { - ok $test_schema->source('DbicslDashTestDb2LoaderTest8') + ok $test_schema->source('Db2LoaderTest8') ->has_relationship('db2_loader_test7'); } 'cross-schema relationship in multi-db_schema'; lives_and { - ok $test_schema->source('DbicslDotTestDb2LoaderTest7') + ok $test_schema->source('Db2LoaderTest7') ->has_relationship('db2_loader_test8s'); } 'cross-schema relationship in multi-db_schema'; }