Commit | Line | Data |
02d58ac0 |
1 | #!perl |
2 | |
cbbd1b5f |
3 | use strict; |
4 | use warnings; |
5 | |
02d58ac0 |
6 | use Test::More; |
3d3e2f00 |
7 | use Test::Deep; |
02d58ac0 |
8 | use Test::Exception; |
9 | |
10 | use lib 't/lib'; |
11 | use DBICDHTest; |
3d3e2f00 |
12 | use aliased 'DBIx::Class::DeploymentHandler::VersionStorage::Standard'; |
c8a2f7bd |
13 | use aliased 'DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator'; |
02d58ac0 |
14 | |
3d3e2f00 |
15 | use DBICVersion_v1; |
16 | use DBIx::Class::DeploymentHandler; |
624e3018 |
17 | my $dbh = DBI->connect('dbi:SQLite::memory:'); |
18 | my @connection = (sub { $dbh }, { ignore_version => 1 }); |
3d3e2f00 |
19 | my $sql_dir = 't/sql'; |
20 | |
21 | my $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 |
29 | DBICDHTest::ready; |
30 | |
c8a2f7bd |
31 | my $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 |
38 | my $vs = Standard->new({ schema => $s }); |
39 | |
be140a5f |
40 | $dm->prepare_resultsource_install({ |
41 | result_source => $vs->version_rs->result_source |
42 | }); |
c8a2f7bd |
43 | |
3d3e2f00 |
44 | ok( $vs, 'DBIC::DH::VersionStorage::Standard instantiates correctly' ); |
45 | |
46 | ok( !$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 | |
53 | ok( $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 |
60 | ok( |
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 | |
68 | is( $vs->database_version, '1.0', 'database version is 1.0'); |
69 | $vs->add_database_version({ |
02a7b8ac |
70 | version => '2.0', |
3d3e2f00 |
71 | }); |
72 | is( $vs->database_version, '2.0', 'database version is 2.0'); |
73 | |
566925df |
74 | ok( |
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 |
82 | my $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 | |
93 | ok( $vs->version_storage_is_installed, 'VersionStorage is still installed even if all versions are deleted' ); |
02d58ac0 |
94 | done_testing; |