11 use aliased 'DBIx::Class::DeploymentHandler::VersionStorage::Standard';
12 use aliased 'DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator';
13 use File::Temp 'tempdir';
16 use DBIx::Class::DeploymentHandler;
17 my $dbh = DBICDHTest::dbh();
18 my @connection = (sub { $dbh }, { ignore_version => 1 });
19 my $sql_dir = tempdir( CLEANUP => 1 );
21 my $s = DBICVersion::Schema->connect(@connection);
24 local $SIG{__WARN__} = sub {$warning = shift};
25 my $t = DBICVersion::Schema->connect('frewfrew', '', '');
26 like( $warning, qr/Your DB is currently unversioned. Please call upgrade on your schema to sync the DB/, 'warning when database is unversioned');
29 my $dm = Translator->new({
31 script_directory => $sql_dir,
32 databases => ['SQLite'],
33 sql_translator_args => { add_drop_table => 0 },
36 my $vs = Standard->new({ schema => $s });
38 $dm->prepare_resultsource_install({
39 result_source => $vs->version_rs->result_source
42 ok( $vs, 'DBIC::DH::VersionStorage::Standard instantiates correctly' );
44 ok( !$vs->version_storage_is_installed, 'VersionStorage is not yet installed' );
46 $dm->install_resultsource({
47 result_source => $vs->version_rs->result_source,
51 ok( $vs->version_storage_is_installed, 'VersionStorage is now installed' );
54 $vs->add_database_version({
60 [ $vs->version_rs->search(undef, {order_by => 'id'})->get_column('version')->all],
63 'initial version works correctly'
66 is( $vs->database_version, '1.0', 'database version is 1.0');
67 $vs->add_database_version({
70 is( $vs->database_version, '2.0', 'database version is 2.0');
74 [ $vs->version_rs->search(undef, {order_by => 'id'})->get_column('version')->all],
77 'adding another version works correctly'
83 local $SIG{__WARN__} = sub {$warning = shift};
84 $u = DBICVersion::Schema->connect(sub { $dbh });
85 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');
89 $vs->version_rs->delete;
91 ok( $vs->version_storage_is_installed, 'VersionStorage is still installed even if all versions are deleted' );