X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Frun%2F12pg.tl;h=5432a606f9d8f191fa4c00724369f7e1d26ee33e;hb=9d29cf57a7ed1b68277ff2b7ee58d46112d8c384;hp=c39dab5f23d7fc08ab984d58cc75c8b5a4318aa1;hpb=a953d8d9fc96fd74a0a0fe02af3e1469285d1f50;p=dbsrgits%2FDBIx-Class.git diff --git a/t/run/12pg.tl b/t/run/12pg.tl index c39dab5..5432a60 100644 --- a/t/run/12pg.tl +++ b/t/run/12pg.tl @@ -1,22 +1,24 @@ sub run_tests { my $schema = shift; - my ($dsn, $user, $pass) = @ENV{map { "DBICTEST_PG_${_}" } qw/DSN USER PASS/}; #warn "$dsn $user $pass"; plan skip_all, 'Set $ENV{DBICTEST_PG_DSN}, _USER and _PASS to run this test' - . ' (note: creates and drops a table named artist!)' unless ($dsn && $user); + . ' (note: creates and drops tables named artist and casecheck!)' unless ($dsn && $user); -plan tests => 3; +plan tests => 8; DBICTest::Schema->compose_connection('PgTest' => $dsn, $user, $pass); my $dbh = PgTest->schema->storage->dbh; +PgTest->schema->source("Artist")->name("testschema.artist"); +$dbh->do("CREATE SCHEMA testschema;"); -$dbh->do("CREATE TABLE artist (artistid serial PRIMARY KEY, name VARCHAR(255));"); +$dbh->do("CREATE TABLE testschema.artist (artistid serial PRIMARY KEY, name VARCHAR(100), charfield CHAR(10));"); +ok ( $dbh->do('CREATE TABLE testschema.casecheck (id serial PRIMARY KEY, "name" VARCHAR(1), "NAME" VARCHAR(2), "UC_NAME" VARCHAR(3));'), 'Creation of casecheck table'); -PgTest::Artist->load_components('PK::Auto::Pg'); +PgTest::Artist->load_components('PK::Auto'); my $new = PgTest::Artist->create({ name => 'foo' }); @@ -28,21 +30,45 @@ is($new->artistid, 2, "Auto-PK worked"); my $test_type_info = { 'artistid' => { - 'data_type' => 'int4', - 'is_nullable' => 1, - 'size' => 10 + 'data_type' => 'integer', + 'is_nullable' => 0, + 'size' => 4, }, 'name' => { - 'data_type' => 'text', + 'data_type' => 'character varying', 'is_nullable' => 1, - 'size' => 4096 - } + 'size' => 100, + 'default_value' => undef, + }, + 'charfield' => { + 'data_type' => 'character', + 'is_nullable' => 1, + 'size' => 10, + 'default_value' => undef, + }, }; -my $type_info = PgTest->schema->storage->columns_info_for('artist'); -is_deeply($type_info, $test_type_info, 'columns_info_for - column data types'); -$dbh->do("DROP TABLE artist;"); +my $type_info = PgTest->schema->storage->columns_info_for('testschema.artist'); +my $artistid_defval = delete $type_info->{artistid}->{default_value}; +like($artistid_defval, + qr/^nextval\('([^\.]*\.){0,1}artist_artistid_seq'::(?:text|regclass)\)/, + 'columns_info_for - sequence matches Pg get_autoinc_seq expectations'); +is_deeply($type_info, $test_type_info, + 'columns_info_for - column data types'); + +my $name_info = PgTest::Casecheck->column_info( 'name' ); +is( $name_info->{size}, 1, "Case sensitive matching info for 'name'" ); + +my $NAME_info = PgTest::Casecheck->column_info( 'NAME' ); +is( $NAME_info->{size}, 2, "Case sensitive matching info for 'NAME'" ); + +my $uc_name_info = PgTest::Casecheck->column_info( 'uc_name' ); +is( $uc_name_info->{size}, 3, "Case insensitive matching info for 'uc_name'" ); + +$dbh->do("DROP TABLE testschema.artist;"); +$dbh->do("DROP TABLE testschema.casecheck;"); +$dbh->do("DROP SCHEMA testschema;"); }