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