ZOMG use strict and warnings in tests
[dbsrgits/DBIx-Class-DeploymentHandler.git] / t / version_storages / standard.t
CommitLineData
02d58ac0 1#!perl
2
cbbd1b5f 3use strict;
4use warnings;
5
02d58ac0 6use Test::More;
3d3e2f00 7use Test::Deep;
02d58ac0 8use Test::Exception;
9
10use lib 't/lib';
11use DBICDHTest;
3d3e2f00 12use aliased 'DBIx::Class::DeploymentHandler::VersionStorage::Standard';
c8a2f7bd 13use aliased 'DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator';
02d58ac0 14
3d3e2f00 15use DBICVersion_v1;
16use DBIx::Class::DeploymentHandler;
624e3018 17my $dbh = DBI->connect('dbi:SQLite::memory:');
18my @connection = (sub { $dbh }, { ignore_version => 1 });
3d3e2f00 19my $sql_dir = 't/sql';
20
21my $s = DBICVersion::Schema->connect(@connection);
c37d8797 22{
02a7b8ac 23 my $warning;
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');
c37d8797 27}
28
3d3e2f00 29DBICDHTest::ready;
30
c8a2f7bd 31my $dm = Translator->new({
02a7b8ac 32 schema => $s,
91adde75 33 script_directory => $sql_dir,
02a7b8ac 34 databases => ['SQLite'],
35 sql_translator_args => { add_drop_table => 0 },
3d3e2f00 36});
37
3d3e2f00 38my $vs = Standard->new({ schema => $s });
39
be140a5f 40$dm->prepare_resultsource_install({
41 result_source => $vs->version_rs->result_source
42});
c8a2f7bd 43
3d3e2f00 44ok( $vs, 'DBIC::DH::VersionStorage::Standard instantiates correctly' );
45
46ok( !$vs->version_storage_is_installed, 'VersionStorage is not yet installed' );
47
be140a5f 48$dm->install_resultsource({
49 result_source => $vs->version_rs->result_source,
50 version => '1.0',
51});
3d3e2f00 52
53ok( $vs->version_storage_is_installed, 'VersionStorage is now installed' );
54
55
c8a2f7bd 56$vs->add_database_version({
02a7b8ac 57 version => '1.0',
c8a2f7bd 58});
59
566925df 60ok(
02a7b8ac 61 eq_array(
62 [ $vs->version_rs->search(undef, {order_by => 'id'})->get_column('version')->all],
63 [ '1.0' ],
64 ),
65 'initial version works correctly'
3d3e2f00 66);
67
68is( $vs->database_version, '1.0', 'database version is 1.0');
69$vs->add_database_version({
02a7b8ac 70 version => '2.0',
3d3e2f00 71});
72is( $vs->database_version, '2.0', 'database version is 2.0');
73
566925df 74ok(
02a7b8ac 75 eq_array(
76 [ $vs->version_rs->search(undef, {order_by => 'id'})->get_column('version')->all],
77 [ '1.0', '2.0', ],
78 ),
79 'adding another version works correctly'
3d3e2f00 80);
81
624e3018 82my $u;
c37d8797 83{
02a7b8ac 84 my $warning;
85 local $SIG{__WARN__} = sub {$warning = shift};
624e3018 86 $u = DBICVersion::Schema->connect(sub { $dbh });
87 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');
c37d8797 88}
89
90
3d3e2f00 91$vs->version_rs->delete;
92
93ok( $vs->version_storage_is_installed, 'VersionStorage is still installed even if all versions are deleted' );
02d58ac0 94done_testing;