change all the tests to use the new test schema namespace
[dbsrgits/DBIx-Class-DeploymentHandler.git] / t / version_storages / standard.t
index b2476d8..cc1681d 100644 (file)
@@ -1,11 +1,93 @@
 #!perl
 
+use strict;
+use warnings;
+
 use Test::More;
 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 $dbh = DBICDHTest::dbh();
+my @connection = (sub { $dbh }, { ignore_version => 1 });
+my $sql_dir = 't/sql';
+
+my $s = DBICVersion::Schema1->connect(@connection);
+{
+   my $warning;
+   local $SIG{__WARN__} = sub {$warning = shift};
+   my $t = DBICVersion::Schema1->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 $u;
+{
+   my $warning;
+   local $SIG{__WARN__} = sub {$warning = shift};
+   $u = DBICVersion::Schema1->connect(sub { $dbh });
+   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;