X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F02-instantiation.t;h=60d521602fbce3910d6a2f1976e6febce317ff51;hb=cf400f483c5280a6d302f715b0d730ae829a4523;hp=3af52c03f8771193d35664b76dee29317b53dce0;hpb=e0743c250735642baadec89ffc28b045a5eb9476;p=dbsrgits%2FDBIx-Class-DeploymentHandler.git diff --git a/t/02-instantiation.t b/t/02-instantiation.t index 3af52c0..60d5216 100644 --- a/t/02-instantiation.t +++ b/t/02-instantiation.t @@ -1,62 +1,122 @@ #!perl use Test::More; +use Test::Exception; use lib 't/lib'; use DBICTest; use DBIx::Class::DeploymentHandler; - +my $db = 'dbi:SQLite:db.db'; my $sql_dir = 't/sql'; +unlink 'db.db' if -e 'db.db'; +mkdir 't/sql' unless -d 't/sql'; + VERSION1: { - use_ok 'DBICVersion_v1'; - my $s = DBICVersion::Schema->connect('dbi:SQLite::memory:'); - ok($s, 'DBICVersion::Schema 1.0 instantiates correctly'); - my $handler = DBIx::Class::DeploymentHandler->new({ - schema => $s, - }); - - ok($handler, 'DBIx::Class::DeploymentHandler w/1.0 instantiates correctly'); - - my $version = $s->schema_version(); - $handler->create_ddl_dir( 'SQLite', $version, $sql_dir, 0); - ok(-e 't/sql/DBICVersion-Schema-1.0-SQLite.sql', 'DDL for 1.0 got created successfully'); + use_ok 'DBICVersion_v1'; + my $s = DBICVersion::Schema->connect($db); + ok($s, 'DBICVersion::Schema 1.0 instantiates correctly'); + my $handler = DBIx::Class::DeploymentHandler->new({ + upgrade_directory => $sql_dir, + schema => $s, + databases => 'SQLite', + }); + + ok($handler, 'DBIx::Class::DeploymentHandler w/1.0 instantiates correctly'); + + my $version = $s->schema_version(); + $handler->create_ddl_dir( $version, 0); + ok(-e 't/sql/DBICVersion-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('dbi:SQLite::memory:'); - ok($s, 'DBICVersion::Schema 2.0 instantiates correctly'); - my $handler = DBIx::Class::DeploymentHandler->new({ - schema => $s, - }); - - ok($handler, 'DBIx::Class::DeploymentHandler w/2.0 instantiates correctly'); - - $version = $s->schema_version(); - $handler->create_ddl_dir( 'SQLite', $version, $sql_dir, 0); - $handler->create_ddl_dir( 'SQLite', $version, $sql_dir, '1.0'); - ok(-e 't/sql/DBICVersion-Schema-2.0-SQLite.sql', 'DDL for 2.0 got created successfully'); - ok(-e 't/sql/DBICVersion-Schema-1.0-2.0-SQLite.sql', 'DDL for migration from 1.0 to 2.0 got created successfully'); + use_ok 'DBICVersion_v2'; + my $s = DBICVersion::Schema->connect($db); + 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->create_ddl_dir($version, 0); + $handler->create_ddl_dir($version, '1.0'); + ok(-e 't/sql/DBICVersion-Schema-2.0-SQLite.sql', 'DDL for 2.0 got created successfully'); + ok(-e 't/sql/DBICVersion-Schema-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_single_step('1.0', '2.0'); + lives_ok { + $s->resultset('Foo')->create({ + bar => 'frew', + baz => 'frew', + }) + } 'schema is deployed'; } VERSION3: { - use_ok 'DBICVersion_v3'; - my $s = DBICVersion::Schema->connect('dbi:SQLite::memory:'); - ok($s, 'DBICVersion::Schema 3.0 instantiates correctly'); - my $handler = DBIx::Class::DeploymentHandler->new({ - schema => $s, - }); - - ok($handler, 'DBIx::Class::DeploymentHandler w/3.0 instantiates correctly'); - - $version = $s->schema_version(); - $handler->create_ddl_dir( 'SQLite', $version, $sql_dir, 0); - $handler->create_ddl_dir( 'SQLite', $version, $sql_dir, '1.0'); - $handler->create_ddl_dir( 'SQLite', $version, $sql_dir, '2.0'); - ok(-e 't/sql/DBICVersion-Schema-3.0-SQLite.sql', 'DDL for 3.0 got created successfully'); - ok(-e 't/sql/DBICVersion-Schema-1.0-3.0-SQLite.sql', 'DDL for migration from 1.0 to 3.0 got created successfully'); - ok(-e 't/sql/DBICVersion-Schema-2.0-3.0-SQLite.sql', 'DDL for migration from 2.0 to 3.0 got created successfully'); + use_ok 'DBICVersion_v3'; + my $s = DBICVersion::Schema->connect($db); + 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->create_ddl_dir( $version, 0); + $handler->create_ddl_dir( $version, '1.0'); + $handler->create_ddl_dir( $version, '2.0'); + ok(-e 't/sql/DBICVersion-Schema-3.0-SQLite.sql', 'DDL for 3.0 got created successfully'); + ok(-e 't/sql/DBICVersion-Schema-1.0-3.0-SQLite.sql', 'DDL for migration from 1.0 to 3.0 got created successfully'); + ok(-e 't/sql/DBICVersion-Schema-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