X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F10_03pg_common.t;h=8d17f1ddf53ec00f46932f446198cfe18bd54c69;hb=f104db1e94bd9f6be262a9e3ed319b2a01fe9f5f;hp=668d4da8e48abc1530e2d1c2b5534c3373e059fb;hpb=c4a69b87bd3d3fdda08f05d363311a6e9d3fc0f7;p=dbsrgits%2FDBIx-Class-Schema-Loader.git diff --git a/t/10_03pg_common.t b/t/10_03pg_common.t index 668d4da..8d17f1d 100644 --- a/t/10_03pg_common.t +++ b/t/10_03pg_common.t @@ -39,6 +39,12 @@ my $tester = dbixcsl_common_tests->new( bool => { data_type => 'boolean' }, 'bool default false' => { data_type => 'boolean', default_value => \'false' }, + 'bool default true' + => { data_type => 'boolean', default_value => \'true' }, + 'bool default 0::bool' + => { data_type => 'boolean', default_value => \'false' }, + 'bool default 1::bool' + => { data_type => 'boolean', default_value => \'true' }, bigint => { data_type => 'bigint' }, int8 => { data_type => 'bigint' }, @@ -94,12 +100,18 @@ my $tester = dbixcsl_common_tests->new( 'varchar(2)' => { data_type => 'varchar', size => 2 }, 'character(2)' => { data_type => 'char', size => 2 }, 'char(2)' => { data_type => 'char', size => 2 }, + # check that default null is correctly rewritten + 'char(3) default null' => { data_type => 'char', size => 3, + default_value => \'null' }, 'character' => { data_type => 'char', size => 1 }, 'char' => { data_type => 'char', size => 1 }, text => { data_type => 'text' }, # varchar with no size has unlimited size, we rewrite to 'text' varchar => { data_type => 'text', original => { data_type => 'varchar' } }, + # check default null again (to make sure ref is safe) + 'varchar(3) default null' => { data_type => 'varchar', size => 3, + default_value => \'null' }, # Datetime Types date => { data_type => 'date' }, @@ -178,13 +190,22 @@ my $tester = dbixcsl_common_tests->new( CREATE TABLE "dbicsl-test".pg_loader_test5 ( id SERIAL PRIMARY KEY, value VARCHAR(100), - four_id INTEGER UNIQUE REFERENCES "dbicsl-test".pg_loader_test4 (id) + four_id INTEGER REFERENCES "dbicsl-test".pg_loader_test4 (id), + CONSTRAINT loader_test5_uniq UNIQUE (four_id) ) }, q{ CREATE SCHEMA "dbicsl.test" }, q{ + CREATE TABLE "dbicsl.test".pg_loader_test5 ( + pk SERIAL PRIMARY KEY, + value VARCHAR(100), + four_id INTEGER REFERENCES "dbicsl-test".pg_loader_test4 (id), + CONSTRAINT loader_test5_uniq UNIQUE (four_id) + ) + }, + q{ CREATE TABLE "dbicsl.test".pg_loader_test6 ( id SERIAL PRIMARY KEY, value VARCHAR(100), @@ -213,7 +234,7 @@ my $tester = dbixcsl_common_tests->new( 'DROP TYPE pg_loader_test_enum', ], drop => [ qw/ pg_loader_test1 pg_loader_test2 / ], - count => 4 + 28 * 2, + count => 4 + 30 * 2, run => sub { my ($schema, $monikers, $classes) = @_; @@ -254,6 +275,7 @@ my $tester = dbixcsl_common_tests->new( { naming => 'current', db_schema => $db_schema, + moniker_parts => [qw/schema name/], preserve_case => 1, dump_directory => EXTRA_DUMP_DIR, quiet => 1, @@ -277,7 +299,7 @@ my $tester = dbixcsl_common_tests->new( } 'connected test schema'; lives_and { - ok $rsrc = $test_schema->source('PgLoaderTest4'); + ok $rsrc = $test_schema->source('DbicslDashTestPgLoaderTest4'); } 'got source for table in schema name with dash'; is try { $rsrc->column_info('id')->{is_auto_increment} }, 1, @@ -290,14 +312,14 @@ my $tester = dbixcsl_common_tests->new( 'column in schema name with dash'; lives_and { - ok $rs = $test_schema->resultset('PgLoaderTest4'); + ok $rs = $test_schema->resultset('DbicslDashTestPgLoaderTest4'); } 'got resultset for table in schema name with dash'; lives_and { ok $row = $rs->create({ value => 'foo' }); } 'executed SQL on table in schema name with dash'; - $rel_info = try { $rsrc->relationship_info('pg_loader_test5') }; + $rel_info = try { $rsrc->relationship_info('dbicsl_dash_test_pg_loader_test5') }; is_deeply $rel_info->{cond}, { 'foreign.four_id' => 'self.id' @@ -310,7 +332,7 @@ my $tester = dbixcsl_common_tests->new( 'relationship in schema name with dash'; lives_and { - ok $rsrc = $test_schema->source('PgLoaderTest5'); + ok $rsrc = $test_schema->source('DbicslDashTestPgLoaderTest5'); } 'got source for table in schema name with dash'; %uniqs = try { $rsrc->unique_constraints }; @@ -318,8 +340,13 @@ my $tester = dbixcsl_common_tests->new( is keys %uniqs, 2, 'got unique and primary constraint in schema name with dash'; + delete $uniqs{primary}; + + is_deeply ((values %uniqs)[0], ['four_id'], + 'unique constraint is correct in schema name with dash'); + lives_and { - ok $rsrc = $test_schema->source('PgLoaderTest6'); + ok $rsrc = $test_schema->source('DbicslDotTestPgLoaderTest6'); } 'got source for table in schema name with dot'; is try { $rsrc->column_info('id')->{is_auto_increment} }, 1, @@ -332,7 +359,7 @@ my $tester = dbixcsl_common_tests->new( 'column in schema name with dot introspected correctly'; lives_and { - ok $rs = $test_schema->resultset('PgLoaderTest6'); + ok $rs = $test_schema->resultset('DbicslDotTestPgLoaderTest6'); } 'got resultset for table in schema name with dot'; lives_and { @@ -352,7 +379,7 @@ my $tester = dbixcsl_common_tests->new( 'relationship in schema name with dot'; lives_and { - ok $rsrc = $test_schema->source('PgLoaderTest7'); + ok $rsrc = $test_schema->source('DbicslDotTestPgLoaderTest7'); } 'got source for table in schema name with dot'; %uniqs = try { $rsrc->unique_constraints }; @@ -360,23 +387,28 @@ my $tester = dbixcsl_common_tests->new( is keys %uniqs, 2, 'got unique and primary constraint in schema name with dot'; + delete $uniqs{primary}; + + is_deeply ((values %uniqs)[0], ['six_id'], + 'unique constraint is correct in schema name with dot'); + lives_and { - ok $test_schema->source('PgLoaderTest6') + ok $test_schema->source('DbicslDotTestPgLoaderTest6') ->has_relationship('pg_loader_test4'); } 'cross-schema relationship in multi-db_schema'; lives_and { - ok $test_schema->source('PgLoaderTest4') + ok $test_schema->source('DbicslDashTestPgLoaderTest4') ->has_relationship('pg_loader_test6s'); } 'cross-schema relationship in multi-db_schema'; lives_and { - ok $test_schema->source('PgLoaderTest8') + ok $test_schema->source('DbicslDashTestPgLoaderTest8') ->has_relationship('pg_loader_test7'); } 'cross-schema relationship in multi-db_schema'; lives_and { - ok $test_schema->source('PgLoaderTest7') + ok $test_schema->source('DbicslDotTestPgLoaderTest7') ->has_relationship('pg_loader_test8s'); } 'cross-schema relationship in multi-db_schema'; }