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