X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F94versioning.t;h=b53fb59850ead060279e525e41b9c4131bfc4686;hb=f925f7cb11f47c9706c003fda8035be2956087fc;hp=66ea3469fe331520f60b6b9a073966c1bf07af53;hpb=339e3fd090ee19137bfce6a8c828011bc210d55d;p=dbsrgits%2FDBIx-Class.git diff --git a/t/94versioning.t b/t/94versioning.t index 66ea346..b53fb59 100644 --- a/t/94versioning.t +++ b/t/94versioning.t @@ -3,11 +3,12 @@ use strict; use warnings; use Test::More; use File::Spec; +use File::Copy; BEGIN { - eval "use DBD::SQLite; use SQL::Translator;"; + eval "use DBD::SQLite; use SQL::Translator 0.08;"; plan $@ - ? ( skip_all => 'needs DBD::SQLite and SQL::Translator for testing' ) + ? ( skip_all => 'needs DBD::SQLite and SQL::Translator 0.08 for testing' ) : ( tests => 6 ); } @@ -21,7 +22,12 @@ unlink($db_file . "-journal") if -e $db_file . "-journal"; mkdir("t/var") unless -d "t/var"; unlink('t/var/DBICVersion-Schema-1.0-SQLite.sql'); -my $schema_orig = DBICVersion::Schema->connect("dbi:SQLite:$db_file"); +my $schema_orig = DBICVersion::Schema->connect( + "dbi:SQLite:$db_file", + undef, + undef, + { AutoCommit => 1 }, +); # $schema->storage->ensure_connected(); is($schema_orig->ddl_filename('SQLite', 't/var', '1.0'), File::Spec->catfile('t', 'var', 'DBICVersion-Schema-1.0-SQLite.sql'), 'Filename creation working'); @@ -32,24 +38,77 @@ ok(-f 't/var/DBICVersion-Schema-1.0-SQLite.sql', 'Created DDL file'); # $schema->deploy(); my $tvrs = $schema_orig->resultset('Table'); -is($schema_orig->exists($tvrs), 1, 'Created schema from DDL file'); +is($schema_orig->_source_exists($tvrs), 1, 'Created schema from DDL file'); eval "use DBICVersionNew"; -my $schema_new = DBICVersion::Schema->connect("dbi:SQLite:$db_file"); - -unlink('t/var/DBICVersion-Schema-2.0-SQLite.sql'); -unlink('t/var/DBICVersion-Schema-1.0-2.0-SQLite.sql'); -$schema_new->create_ddl_dir('SQLite', undef, 't/var', '1.0'); -ok(-f 't/var/DBICVersion-Schema-1.0-2.0-SQLite.sql', 'Created DDL upgrade file'); +my $schema_new = DBICVersion::Schema->connect( + "dbi:SQLite:$db_file", + undef, + undef, + { AutoCommit => 1 }, +); ## create new to pick up filedata for upgrade files we just made (on_connect) -my $schema_upgrade = DBICVersion::Schema->connect("dbi:SQLite:$db_file"); -## do this here or let Versioned.pm do it? -$schema_upgrade->upgrade(); -$tvrs = $schema_upgrade->resultset('Table'); -is($schema_upgrade->exists($tvrs), 1, 'Upgraded schema from DDL file'); +# { +# unlink('t/var/DBICVersion-Schema-1.0-2.0-SQLite.sql'); +# copy('t/var/DBICVersion-Schema-1.0-2.0-SQLite-erroneous.sql', 't/var/DBICVersion-Schema-1.0-2.0-SQLite.sql'); + +# my $schema_upgrade = DBICVersion::Schema->connect( +# "dbi:SQLite:$db_file", +# undef, +# undef, +# { AutoCommit => 1 }, +# ); + + +# is($schema_upgrade->get_db_version(), '1.0', 'get_db_version ok'); + +# eval { +# # this will die with errors +# $schema_upgrade->upgrade(); +# }; +# isnt($@, '', 'dodgy upgrade dies'); + +# eval { +# my @results = $schema_upgrade->storage->dbh->do('select VersionName from TestVersion'); +# }; +# is($@, '', 'partial upgrade properly rolledback'); +# is($schema_upgrade->get_db_version(), '1.0', 'db version number not upgraded'); +# } + +{ + unlink('t/var/DBICVersion-Schema-2.0-SQLite.sql'); + unlink('t/var/DBICVersion-Schema-1.0-2.0-SQLite.sql'); + +# $schema_new->create_ddl_dir('SQLite', undef, 't/var', '1.0'); +# ok(-f 't/var/DBICVersion-Schema-1.0-2.0-SQLite.sql', 'Created DDL upgrade file'); + + copy('t/var/DBICVersion-Schema-1.0-2.0-SQLite-proper.sql', 't/var/DBICVersion-Schema-1.0-2.0-SQLite.sql'); + + my $schema_upgrade = DBICVersion::Schema->connect( + "dbi:SQLite:$db_file", + undef, + undef, + { AutoCommit => 1 }, + ); + + + is($schema_upgrade->get_db_version(), '1.0', 'get_db_version ok'); + + eval { + # this should be okay + $schema_upgrade->upgrade(); + }; + is($@, '', 'proper upgrade okay'); + eval { + $schema_upgrade->storage->dbh->do('select NewVersionName from TestVersion'); + }; + is($@, '', 'new column created'); + is($schema_upgrade->get_db_version(), '2.0', 'db version number successfully upgraded'); +} +exit; unlink($db_file) if -e $db_file; unlink($db_file . "-journal") if -e $db_file . "-journal"; unlink('t/var/DBICVersion-Schema-1.0-SQLite.sql');