X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F03-deprecated.t;h=f89950eca4476cc4d2ed9f1b1efca491d98bc60e;hb=8bb2f1ac7ad65531f27e24967076fa133f08da93;hp=10fbc2dab452f291b991afe34f96cd7a40eb85d9;hpb=013429985a2df1b341d8e27f98252fa14f878c1f;p=dbsrgits%2FDBIx-Class-DeploymentHandler.git diff --git a/t/03-deprecated.t b/t/03-deprecated.t index 10fbc2d..f89950e 100644 --- a/t/03-deprecated.t +++ b/t/03-deprecated.t @@ -1,10 +1,123 @@ #!perl +use strict; +use warnings; + +use lib 't/lib'; +use DBICDHTest; +use aliased 'DBIx::Class::DeploymentHandler::Deprecated'; + +use File::Path 'remove_tree'; use Test::More; +use Test::Exception; -use_ok 'DBIx::Class::DeploymentHandler::Deprecated'; +DBICDHTest::ready; -done_testing; -__END__ +my $dbh = DBI->connect('dbi:SQLite::memory:'); +my @connection = (sub { $dbh }, { ignore_version => 1 }); +my $sql_dir = 't/sql'; + +VERSION1: { + use_ok 'DBICVersion_v1'; + my $s = DBICVersion::Schema->connect(@connection); + is $s->schema_version, '1.0', 'schema version is at 1.0'; + ok($s, 'DBICVersion::Schema 1.0 instantiates correctly'); + my $handler = Deprecated->new({ + script_directory => $sql_dir, + schema => $s, + databases => 'SQLite', + sql_translator_args => { add_drop_table => 0 }, + }); + + ok($handler, 'DBIx::Class::DeploymentHandler w/1.0 instantiates correctly'); + + my $version = $s->schema_version(); + $handler->prepare_deploy(); + + dies_ok { + $s->resultset('Foo')->create({ + bar => 'frew', + }) + } 'schema not deployed'; + $handler->install; + dies_ok { + $handler->install; + } 'cannot install twice'; + lives_ok { + $s->resultset('Foo')->create({ + bar => 'frew', + }) + } 'schema is deployed'; +} -vim: ts=2 sw=2 expandtab +VERSION2: { + use_ok 'DBICVersion_v2'; + my $s = DBICVersion::Schema->connect(@connection); + is $s->schema_version, '2.0', 'schema version is at 2.0'; + ok($s, 'DBICVersion::Schema 2.0 instantiates correctly'); + my $handler = Deprecated->new({ + script_directory => $sql_dir, + schema => $s, + databases => 'SQLite', + }); + + ok($handler, 'DBIx::Class::DeploymentHandler w/2.0 instantiates correctly'); + + my $version = $s->schema_version(); + $handler->prepare_deploy(); + $handler->prepare_upgrade({ from_version => '1.0', to_version => $version }); + dies_ok { + $s->resultset('Foo')->create({ + bar => 'frew', + baz => 'frew', + }) + } 'schema not deployed'; + 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); + is $s->schema_version, '3.0', 'schema version is at 3.0'; + ok($s, 'DBICVersion::Schema 3.0 instantiates correctly'); + my $handler = Deprecated->new({ + script_directory => $sql_dir, + schema => $s, + databases => 'SQLite', + }); + + ok($handler, 'DBIx::Class::DeploymentHandler w/3.0 instantiates correctly'); + + my $version = $s->schema_version(); + $handler->prepare_deploy; + $handler->prepare_upgrade({ from_version => '2.0', to_version => $version }); + 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;