X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F93nobindvars.t;h=a2e0cba2010ac91f7971c037594c86ca238aba98;hb=1f870d5a08fa1794734380d7c8bd6753cdcf8f6d;hp=b4e1adca6eb629d357131117c0fca8fde6e315b5;hpb=c216324aa4b0f79ba056fbe74adbd735421e378a;p=dbsrgits%2FDBIx-Class.git diff --git a/t/93nobindvars.t b/t/93nobindvars.t index b4e1adc..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_namespace('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;