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