X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fversion_storages%2Fstandard.t;h=211fde67441634330b3585c0f4473a48e4ce8c92;hb=91adde755e5808a1ec12bcf00e683e3754964cc9;hp=b2476d85a5c8bd04a1adedf4d01f4ee9c9aa1e69;hpb=02d58ac05dd4ccbe5fd4ff8a9cc58681ee1b74ee;p=dbsrgits%2FDBIx-Class-DeploymentHandler.git diff --git a/t/version_storages/standard.t b/t/version_storages/standard.t index b2476d8..211fde6 100644 --- a/t/version_storages/standard.t +++ b/t/version_storages/standard.t @@ -1,11 +1,90 @@ #!perl use Test::More; +use Test::Deep; use Test::Exception; use lib 't/lib'; use DBICDHTest; -use DBICTest; -use_ok 'DBIx::Class::DeploymentHandler::VersionStorage::Standard'; +use aliased 'DBIx::Class::DeploymentHandler::VersionStorage::Standard'; +use aliased 'DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator'; +use DBICVersion_v1; +use DBIx::Class::DeploymentHandler; +my $db = 'dbi:SQLite:db.db'; +my @connection = ($db, '', '', { ignore_version => 1 }); +my $sql_dir = 't/sql'; + +my $s = DBICVersion::Schema->connect(@connection); +{ + my $warning; + local $SIG{__WARN__} = sub {$warning = shift}; + my $t = DBICVersion::Schema->connect('frewfrew', '', ''); + like( $warning, qr/Your DB is currently unversioned. Please call upgrade on your schema to sync the DB/, 'warning when database is unversioned'); +} + +DBICDHTest::ready; + +my $dm = Translator->new({ + schema => $s, + script_directory => $sql_dir, + databases => ['SQLite'], + sql_translator_args => { add_drop_table => 0 }, +}); + +my $vs = Standard->new({ schema => $s }); + +$dm->prepare_resultsource_install({ + result_source => $vs->version_rs->result_source +}); + +ok( $vs, 'DBIC::DH::VersionStorage::Standard instantiates correctly' ); + +ok( !$vs->version_storage_is_installed, 'VersionStorage is not yet installed' ); + +$dm->install_resultsource({ + result_source => $vs->version_rs->result_source, + version => '1.0', +}); + +ok( $vs->version_storage_is_installed, 'VersionStorage is now installed' ); + + +$vs->add_database_version({ + version => '1.0', +}); + +ok( + eq_array( + [ $vs->version_rs->search(undef, {order_by => 'id'})->get_column('version')->all], + [ '1.0' ], + ), + 'initial version works correctly' +); + +is( $vs->database_version, '1.0', 'database version is 1.0'); +$vs->add_database_version({ + version => '2.0', +}); +is( $vs->database_version, '2.0', 'database version is 2.0'); + +ok( + eq_array( + [ $vs->version_rs->search(undef, {order_by => 'id'})->get_column('version')->all], + [ '1.0', '2.0', ], + ), + 'adding another version works correctly' +); + +{ + my $warning; + local $SIG{__WARN__} = sub {$warning = shift}; + my $u = DBICVersion::Schema->connect($db, '', ''); + like( $warning, qr/Versions out of sync. This is 1.0, your database contains version 2.0, please call upgrade on your Schema./, 'warning when database/schema mismatch'); +} + + +$vs->version_rs->delete; + +ok( $vs->version_storage_is_installed, 'VersionStorage is still installed even if all versions are deleted' ); done_testing;