Warn-free test suite with later DBIC
[dbsrgits/DBIx-Class-DeploymentHandler.git] / t / 02-instantiation-no-ddl.t
CommitLineData
cc7c22d9 1#!perl
2
3use strict;
4use warnings;
5
6use lib 't/lib';
7use DBICDHTest;
8use DBIx::Class::DeploymentHandler;
9use aliased 'DBIx::Class::DeploymentHandler', 'DH';
10
11use File::Path 'remove_tree';
12use Test::More;
13use Test::Exception;
624e3018 14use DBI;
cc7c22d9 15
16DBICDHTest::ready;
f3b5161e 17
18my $dbh = DBICDHTest::dbh();
624e3018 19my @connection = (sub { $dbh }, { ignore_version => 1 });
cc7c22d9 20my $sql_dir = 't/sql';
21
22VERSION1: {
23 use_ok 'DBICVersion_v1';
24 my $s = DBICVersion::Schema->connect(@connection);
25 $DBICVersion::Schema::VERSION = 1;
26 ok($s, 'DBICVersion::Schema 1 instantiates correctly');
27 my $handler = DH->new({
28 ignore_ddl => 1,
29 script_directory => $sql_dir,
30 schema => $s,
38857f30 31 databases => [],
cc7c22d9 32 sql_translator_args => { add_drop_table => 0 },
33 });
34
35 ok($handler, 'DBIx::Class::DeploymentHandler w/1 instantiates correctly');
36
37 my $version = $s->schema_version;
5761fe02 38 $handler->prepare_install;
cc7c22d9 39
40 dies_ok {
41 $s->resultset('Foo')->create({
42 bar => 'frew',
43 })
44 } 'schema not deployed';
45 $handler->install;
46 dies_ok {
47 $handler->install;
48 } 'cannot install twice';
49 lives_ok {
50 $s->resultset('Foo')->create({
51 bar => 'frew',
52 })
53 } 'schema is deployed';
54}
55
56VERSION2: {
57 use_ok 'DBICVersion_v2';
58 my $s = DBICVersion::Schema->connect(@connection);
59 $DBICVersion::Schema::VERSION = 2;
60 ok($s, 'DBICVersion::Schema 2 instantiates correctly');
61 my $handler = DH->new({
62 ignore_ddl => 1,
63 script_directory => $sql_dir,
64 schema => $s,
38857f30 65 databases => [],
cc7c22d9 66 });
67
68 ok($handler, 'DBIx::Class::DeploymentHandler w/2 instantiates correctly');
69
70 my $version = $s->schema_version();
5761fe02 71 $handler->prepare_install;
cc7c22d9 72 dies_ok {
73 $s->resultset('Foo')->create({
74 bar => 'frew',
75 baz => 'frew',
76 })
77 } 'schema not deployed';
78 dies_ok {
79 $s->resultset('Foo')->create({
80 bar => 'frew',
81 baz => 'frew',
82 })
83 } 'schema not uppgrayyed';
84 $handler->upgrade;
85 lives_ok {
86 $s->resultset('Foo')->create({
87 bar => 'frew',
88 baz => 'frew',
89 })
90 } 'schema is deployed';
91}
92
93VERSION3: {
94 use_ok 'DBICVersion_v3';
95 my $s = DBICVersion::Schema->connect(@connection);
96 $DBICVersion::Schema::VERSION = 3;
97 ok($s, 'DBICVersion::Schema 3 instantiates correctly');
98 my $handler = DH->new({
99 ignore_ddl => 1,
100 script_directory => $sql_dir,
101 schema => $s,
38857f30 102 databases => [],
cc7c22d9 103 });
104
105 ok($handler, 'DBIx::Class::DeploymentHandler w/3 instantiates correctly');
106
107 my $version = $s->schema_version();
5761fe02 108 $handler->prepare_install;
cc7c22d9 109 dies_ok {
110 $s->resultset('Foo')->create({
111 bar => 'frew',
112 baz => 'frew',
113 biff => 'frew',
114 })
115 } 'schema not deployed';
116 $handler->upgrade;
117 lives_ok {
118 $s->resultset('Foo')->create({
119 bar => 'frew',
120 baz => 'frew',
121 biff => 'frew',
122 })
123 } 'schema is deployed';
124}
125
126DOWN2: {
127 use_ok 'DBICVersion_v4';
128 my $s = DBICVersion::Schema->connect(@connection);
129 $DBICVersion::Schema::VERSION = 2;
130 ok($s, 'DBICVersion::Schema 2 instantiates correctly');
131 my $handler = DH->new({
132 ignore_ddl => 1,
133 script_directory => $sql_dir,
134 schema => $s,
38857f30 135 databases => [],
cc7c22d9 136 });
137
138 ok($handler, 'DBIx::Class::DeploymentHandler w/2 instantiates correctly');
139
140 my $version = $s->schema_version();
141 lives_ok {
142 $s->resultset('Foo')->create({
143 bar => 'frew',
144 baz => 'frew',
145 biff => 'frew',
146 })
147 } 'schema at version 3';
148 $handler->downgrade;
149 dies_ok {
150 $s->resultset('Foo')->create({
151 bar => 'frew',
152 baz => 'frew',
153 biff => 'frew',
154 })
155 } 'schema not at version 3';
156 lives_ok {
157 $s->resultset('Foo')->create({
158 bar => 'frew',
159 baz => 'frew',
160 })
161 } 'schema is at version 2';
2e3cccff 162
163 is $handler->version_storage->database_version => 2,
164 'database version is down to 2';
165
cc7c22d9 166}
167
168done_testing;