X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Frun%2F12pg.tl;h=ee3e819d99df65ec23d266036c087be9a18c8a31;hb=5faa95affd5bb016d0fa81f7f99411ce4db5ff08;hp=f2aff97f4a22e1a7fb10b98c76c9e45f9735029d;hpb=0567538f9dcf59ff0dcf0fe766815b242115ce20;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/t/run/12pg.tl b/t/run/12pg.tl index f2aff97..ee3e819 100644 --- a/t/run/12pg.tl +++ b/t/run/12pg.tl @@ -1,29 +1,61 @@ 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' - unless ($dsn && $user); + . ' (note: creates and drops a table named artist!)' unless ($dsn && $user); -plan tests => 1; +plan tests => 4; DBICTest::Schema->compose_connection('PgTest' => $dsn, $user, $pass); -my $dbh = PgTest::Artist->storage->dbh; +my $dbh = PgTest->schema->storage->dbh; -eval { - $dbh->do("DROP TABLE artist;"); -}; - -$dbh->do("CREATE TABLE artist (artistid serial PRIMARY KEY, name VARCHAR(255));"); +$dbh->do("CREATE TABLE artist (artistid serial PRIMARY KEY, name VARCHAR(255), charfield CHAR(10));"); -PgTest::Artist->load_components('PK::Auto::Pg'); +PgTest::Artist->load_components('PK::Auto'); my $new = PgTest::Artist->create({ name => 'foo' }); -ok($new->artistid, "Auto-PK worked"); +is($new->artistid, 1, "Auto-PK worked"); + +$new = PgTest::Artist->create({ name => 'bar' }); + +is($new->artistid, 2, "Auto-PK worked"); + +my $test_type_info = { + 'artistid' => { + 'data_type' => 'integer', + 'is_nullable' => 0, + 'size' => 4, + }, + 'name' => { + 'data_type' => 'character varying', + 'is_nullable' => 1, + 'size' => 255, + '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'); +my $artistid_defval = delete $type_info->{artistid}->{default_value}; +like($artistid_defval, + qr/^nextval\('public\.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'); + +$dbh->do("DROP TABLE artist;"); }