X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F02-instantiation.t;h=7d673099496fe15df9ba8e5772af1da887caa007;hb=aa5ad00e656c25a27bb08df4443ec0adecc7c524;hp=4943e3c199fe2ab47233df9a4035dc6033585228;hpb=b974984a4aa4db356fe2ebe90fb7e039da71197c;p=dbsrgits%2FDBIx-Class-DeploymentHandler.git diff --git a/t/02-instantiation.t b/t/02-instantiation.t index 4943e3c..7d67309 100644 --- a/t/02-instantiation.t +++ b/t/02-instantiation.t @@ -1,15 +1,128 @@ #!perl use Test::More; +use Test::Exception; +use File::Path 'remove_tree'; use lib 't/lib'; use DBICTest; use DBIx::Class::DeploymentHandler; +my $db = 'dbi:SQLite:db.db'; +my @connection = ($db, '', '', { ignore_version => 1 }); +my $sql_dir = 't/sql'; -my $handler = DBIx::Class::DeploymentHandler->new({ - schema => DBICTest->init_schema() -}); +unlink 'db.db' if -e 'db.db'; +if (-d 't/sql') { + remove_tree('t/sql'); + mkdir 't/sql'; +} -ok($handler, 'DBIx::Class::DeploymentHandler instantiates correctly'); +VERSION1: { + use_ok 'DBICVersion_v1'; + my $s = DBICVersion::Schema->connect(@connection); + ok($s, 'DBICVersion::Schema 1.0 instantiates correctly'); + my $handler = DBIx::Class::DeploymentHandler->new({ + upgrade_directory => $sql_dir, + schema => $s, + databases => 'SQLite', + sqltargs => { add_drop_table => 0 }, + }); + + ok($handler, 'DBIx::Class::DeploymentHandler w/1.0 instantiates correctly'); + + my $version = $s->schema_version(); + $handler->prepare_install(); + #ok(-e 't/sql/DBICVersion-Schema-schema-1.0-SQLite.sql', 'DDL for 1.0 got created successfully'); + + dies_ok { + $s->resultset('Foo')->create({ + bar => 'frew', + }) + } 'schema not deployed'; + $handler->install; + lives_ok { + $s->resultset('Foo')->create({ + bar => 'frew', + }) + } 'schema is deployed'; +} + +VERSION2: { + use_ok 'DBICVersion_v2'; + my $s = DBICVersion::Schema->connect(@connection); + ok($s, 'DBICVersion::Schema 2.0 instantiates correctly'); + my $handler = DBIx::Class::DeploymentHandler->new({ + upgrade_directory => $sql_dir, + schema => $s, + databases => 'SQLite', + }); + + ok($handler, 'DBIx::Class::DeploymentHandler w/2.0 instantiates correctly'); + + $version = $s->schema_version(); + $handler->prepare_install(); + $handler->prepare_update('1.0', $version); + #ok(-e 't/sql/DBICVersion-Schema-schema-2.0-SQLite.sql', 'DDL for 2.0 got created successfully'); + #ok(-e 't/sql/DBICVersion-Schema-diff-1.0-2.0-SQLite.sql', 'DDL for migration from 1.0 to 2.0 got created successfully'); + dies_ok { + $s->resultset('Foo')->create({ + bar => 'frew', + baz => 'frew', + }) + } 'schema not deployed'; + #$handler->install('1.0'); + dies_ok { + $s->resultset('Foo')->create({ + bar => 'frew', + baz => 'frew', + }) + } 'schema not uppgrayyed'; + $handler->upgrade; + lives_ok { + $s->resultset('Foo')->create({ + bar => 'frew', + baz => 'frew', + }) + } 'schema is deployed'; +} + +VERSION3: { + use_ok 'DBICVersion_v3'; + my $s = DBICVersion::Schema->connect(@connection); + ok($s, 'DBICVersion::Schema 3.0 instantiates correctly'); + my $handler = DBIx::Class::DeploymentHandler->new({ + upgrade_directory => $sql_dir, + schema => $s, + databases => 'SQLite', + }); + + ok($handler, 'DBIx::Class::DeploymentHandler w/3.0 instantiates correctly'); + + $version = $s->schema_version(); + $handler->prepare_install; + $handler->prepare_update( '1.0', $version ); + $handler->prepare_update( '2.0', $version ); + #ok(-e 't/sql/DBICVersion-Schema-schema-3.0-SQLite.sql', 'DDL for 3.0 got created successfully'); + #ok(-e 't/sql/DBICVersion-Schema-diff-1.0-3.0-SQLite.sql', 'DDL for migration from 1.0 to 3.0 got created successfully'); + #ok(-e 't/sql/DBICVersion-Schema-diff-2.0-3.0-SQLite.sql', 'DDL for migration from 2.0 to 3.0 got created successfully'); + dies_ok { + $s->resultset('Foo')->create({ + bar => 'frew', + baz => 'frew', + biff => 'frew', + }) + } 'schema not deployed'; + $handler->upgrade; + lives_ok { + $s->resultset('Foo')->create({ + bar => 'frew', + baz => 'frew', + biff => 'frew', + }) + } 'schema is deployed'; +} done_testing; +__END__ + +vim: ts=2 sw=2 expandtab