From: Peter Rabbitson Date: Fri, 22 Jan 2010 10:25:01 +0000 (+0000) Subject: Informix test + cleanups X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=835cdc8d730b128213ab8b10f6cf81326ebfc0e8;p=dbsrgits%2FDBIx-Class-Historic.git Informix test + cleanups --- diff --git a/t/745db2.t b/t/745db2.t index 5822f35..bd931d2 100644 --- a/t/745db2.t +++ b/t/745db2.t @@ -1,5 +1,5 @@ use strict; -use warnings; +use warnings; use Test::More; use Test::Exception; @@ -24,17 +24,17 @@ $dbh->do("CREATE TABLE artist (artistid INTEGER GENERATED BY DEFAULT AS IDENTITY my $ars = $schema->resultset('Artist'); is ( $ars->count, 0, 'No rows at first' ); -# test primary key handling +# test primary key handling my $new = $ars->create({ name => 'foo' }); ok($new->artistid, "Auto-PK worked"); -# test explicit key spec +# test explicit key spec $new = $ars->create ({ name => 'bar', artistid => 66 }); is($new->artistid, 66, 'Explicit PK worked'); $new->discard_changes; is($new->artistid, 66, 'Explicit PK assigned'); -# test populate +# test populate lives_ok (sub { my @pop; for (1..2) { @@ -43,7 +43,7 @@ lives_ok (sub { $ars->populate (\@pop); }); -# test populate with explicit key +# test populate with explicit key lives_ok (sub { my @pop; for (1..2) { @@ -51,11 +51,11 @@ lives_ok (sub { } $ars->populate (\@pop); }); - -# count what we did so far + +# count what we did so far is ($ars->count, 6, 'Simple count works'); -# test LIMIT support +# test LIMIT support my $lim = $ars->search( {}, { rows => 3, @@ -63,10 +63,10 @@ my $lim = $ars->search( {}, order_by => 'artistid' } ); -is( $lim->count, 2, 'LIMIT+OFFSET count ok' ); +is( $lim->count, 2, 'ROWS+OFFSET count ok' ); is( $lim->all, 2, 'Number of ->all objects matches count' ); -# test iterator +# test iterator $lim->reset; is( $lim->next->artistid, 101, "iterator->next ok" ); is( $lim->next->artistid, 102, "iterator->next ok" ); @@ -87,12 +87,12 @@ my $test_type_info = { 'charfield' => { 'data_type' => 'CHAR', 'is_nullable' => 1, - 'size' => 10 + 'size' => 10 }, 'rank' => { 'data_type' => 'INTEGER', 'is_nullable' => 1, - 'size' => 10 + 'size' => 10 }, }; diff --git a/t/748informix.t b/t/748informix.t new file mode 100644 index 0000000..04582fe --- /dev/null +++ b/t/748informix.t @@ -0,0 +1,82 @@ +use strict; +use warnings; + +use Test::More; +use Test::Exception; +use lib qw(t/lib); +use DBICTest; + +my ($dsn, $user, $pass) = @ENV{map { "DBICTEST_INFORMIX_${_}" } qw/DSN USER PASS/}; + +#warn "$dsn $user $pass"; + +plan skip_all => 'Set $ENV{DBICTEST_INFORMIX_DSN}, _USER and _PASS to run this test' + unless ($dsn && $user); + +my $schema = DBICTest::Schema->connect($dsn, $user, $pass); + +my $dbh = $schema->storage->dbh; + +eval { $dbh->do("DROP TABLE artist") }; + +$dbh->do("CREATE TABLE artist (artistid SERIAL, name VARCHAR(255), charfield CHAR(10), rank INTEGER DEFAULT 13);"); + +my $ars = $schema->resultset('Artist'); +is ( $ars->count, 0, 'No rows at first' ); + +# test primary key handling +my $new = $ars->create({ name => 'foo' }); +ok($new->artistid, "Auto-PK worked"); + +# test explicit key spec +$new = $ars->create ({ name => 'bar', artistid => 66 }); +is($new->artistid, 66, 'Explicit PK worked'); +$new->discard_changes; +is($new->artistid, 66, 'Explicit PK assigned'); + +# test populate +lives_ok (sub { + my @pop; + for (1..2) { + push @pop, { name => "Artist_$_" }; + } + $ars->populate (\@pop); +}); + +# test populate with explicit key +lives_ok (sub { + my @pop; + for (1..2) { + push @pop, { name => "Artist_expkey_$_", artistid => 100 + $_ }; + } + $ars->populate (\@pop); +}); + +# count what we did so far +is ($ars->count, 6, 'Simple count works'); + +# test LIMIT support +my $lim = $ars->search( {}, + { + rows => 3, + offset => 4, + order_by => 'artistid' + } +); +is( $lim->count, 2, 'ROWS+OFFSET count ok' ); +is( $lim->all, 2, 'Number of ->all objects matches count' ); + +# test iterator +$lim->reset; +is( $lim->next->artistid, 101, "iterator->next ok" ); +is( $lim->next->artistid, 102, "iterator->next ok" ); +is( $lim->next, undef, "next past end of resultset ok" ); + + +done_testing; + +# clean up our mess +END { + my $dbh = eval { $schema->storage->_dbh }; + $dbh->do("DROP TABLE artist") if $dbh; +}