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