X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F93nobindvars.t;h=a2e0cba2010ac91f7971c037594c86ca238aba98;hb=68de943862f06cabd397d2e74d12cd9cdc999779;hp=a759a6cbc44b9c8d4412b741a4e53d2a95fd5833;hpb=d5130dd2ecbb3a4d31393332f6b4e419f251f427;p=dbsrgits%2FDBIx-Class.git diff --git a/t/93nobindvars.t b/t/93nobindvars.t index a759a6c..a2e0cba 100644 --- a/t/93nobindvars.t +++ b/t/93nobindvars.t @@ -1,9 +1,5 @@ use strict; -use warnings; - -# Copied from 71mysql.t, manually using NoBindVars. This is to give that code -# wider testing, since virtually nobody who regularly runs the test suite -# is using DBD::Sybase+FreeTDS+MSSQL -- blblack +use warnings; use Test::More; use lib qw(t/lib); @@ -17,49 +13,54 @@ my ($dsn, $user, $pass) = @ENV{map { "DBICTEST_MYSQL_${_}" } qw/DSN USER PASS/}; plan skip_all => 'Set $ENV{DBICTEST_MYSQL_DSN}, _USER and _PASS to run this test' unless ($dsn && $user); -plan tests => 4; - { # Fake storage driver for mysql + no bind variables package DBIx::Class::Storage::DBI::MySQLNoBindVars; + use Class::C3; use base qw/ - DBIx::Class::Storage::DBI::mysql DBIx::Class::Storage::DBI::NoBindVars + DBIx::Class::Storage::DBI::mysql /; $INC{'DBIx/Class/Storage/DBI/MySQLNoBindVars.pm'} = 1; } -DBICTest::Schema->storage(undef); # just in case? -DBICTest::Schema->storage_type('::DBI::MySQLNoBindVars'); -DBICTest::Schema->compose_connection('MySQLTest' => $dsn, $user, $pass); +# XXX Class::C3 doesn't like some of the Storage stuff happening late... +Class::C3::reinitialize(); -my $dbh = MySQLTest->schema->storage->dbh; +my $schema = DBICTest::Schema->clone; +$schema->storage_type('::DBI::MySQLNoBindVars'); +$schema->connection($dsn, $user, $pass); -$dbh->do("DROP TABLE IF EXISTS artist;"); +my $dbh = $schema->storage->dbh; -$dbh->do("CREATE TABLE artist (artistid INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), charfield CHAR(10));"); +$dbh->do("DROP TABLE IF EXISTS artist;"); -#'dbi:mysql:host=localhost;database=dbic_test', 'dbic_test', ''); +$dbh->do("CREATE TABLE artist (artistid INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), rank INTEGER NOT NULL DEFAULT '13', charfield CHAR(10));"); -MySQLTest::Artist->load_components('PK::Auto'); +$schema->class('Artist')->load_components('PK::Auto'); # test primary key handling -my $new = MySQLTest::Artist->create({ name => 'foo' }); +my $new = $schema->resultset('Artist')->create({ name => 'foo' }); ok($new->artistid, "Auto-PK worked"); # test LIMIT support for (1..6) { - MySQLTest::Artist->create({ name => 'Artist ' . $_ }); + $schema->resultset('Artist')->create({ name => 'Artist ' . $_ }); } -my $it = MySQLTest::Artist->search( {}, +my $it = $schema->resultset('Artist')->search( {}, { rows => 3, offset => 2, order_by => 'artistid' } ); -is( $it->count, 3, "LIMIT count ok" ); +is( $it->count, 3, "LIMIT count ok" ); # ask for 3 rows out of 7 artists is( $it->next->name, "Artist 2", "iterator->next ok" ); $it->next; $it->next; is( $it->next, undef, "next past end of resultset ok" ); # clean up our mess -$dbh->do("DROP TABLE artist"); +END { + my $dbh = eval { $schema->storage->_dbh }; + $dbh->do("DROP TABLE artist") if $dbh; +} + +done_testing;