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