Commit | Line | Data |
cc7c22d9 |
1 | #!perl |
2 | |
3 | use strict; |
4 | use warnings; |
5 | |
6 | use lib 't/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; |
624e3018 |
14 | use DBI; |
cc7c22d9 |
15 | |
16 | DBICDHTest::ready; |
f3b5161e |
17 | |
18 | my $dbh = DBICDHTest::dbh(); |
624e3018 |
19 | my @connection = (sub { $dbh }, { ignore_version => 1 }); |
cc7c22d9 |
20 | my $sql_dir = 't/sql'; |
21 | |
22 | VERSION1: { |
23 | use_ok 'DBICVersion_v1'; |
60655857 |
24 | my $s = DBICVersion::Schema1->connect(@connection); |
25 | $DBICVersion::Schema1::VERSION = 1; |
cc7c22d9 |
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 | |
56 | VERSION2: { |
57 | use_ok 'DBICVersion_v2'; |
60655857 |
58 | my $s = DBICVersion::Schema2->connect(@connection); |
59 | $DBICVersion::Schema2::VERSION = 2; |
cc7c22d9 |
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; |
60655857 |
72 | #$handler->prepare_upgrade({ from_version => 1, to_version => 2 }); |
cc7c22d9 |
73 | dies_ok { |
74 | $s->resultset('Foo')->create({ |
75 | bar => 'frew', |
76 | baz => 'frew', |
77 | }) |
78 | } 'schema not deployed'; |
79 | dies_ok { |
80 | $s->resultset('Foo')->create({ |
81 | bar => 'frew', |
82 | baz => 'frew', |
83 | }) |
84 | } 'schema not uppgrayyed'; |
85 | $handler->upgrade; |
86 | lives_ok { |
87 | $s->resultset('Foo')->create({ |
88 | bar => 'frew', |
89 | baz => 'frew', |
90 | }) |
91 | } 'schema is deployed'; |
92 | } |
93 | |
94 | VERSION3: { |
95 | use_ok 'DBICVersion_v3'; |
60655857 |
96 | my $s = DBICVersion::Schema3->connect(@connection); |
97 | $DBICVersion::Schema3::VERSION = 3; |
cc7c22d9 |
98 | ok($s, 'DBICVersion::Schema 3 instantiates correctly'); |
99 | my $handler = DH->new({ |
100 | ignore_ddl => 1, |
101 | script_directory => $sql_dir, |
102 | schema => $s, |
38857f30 |
103 | databases => [], |
cc7c22d9 |
104 | }); |
105 | |
106 | ok($handler, 'DBIx::Class::DeploymentHandler w/3 instantiates correctly'); |
107 | |
108 | my $version = $s->schema_version(); |
5761fe02 |
109 | $handler->prepare_install; |
cc7c22d9 |
110 | dies_ok { |
111 | $s->resultset('Foo')->create({ |
112 | bar => 'frew', |
113 | baz => 'frew', |
114 | biff => 'frew', |
115 | }) |
116 | } 'schema not deployed'; |
117 | $handler->upgrade; |
118 | lives_ok { |
119 | $s->resultset('Foo')->create({ |
120 | bar => 'frew', |
121 | baz => 'frew', |
122 | biff => 'frew', |
123 | }) |
124 | } 'schema is deployed'; |
125 | } |
126 | |
127 | DOWN2: { |
128 | use_ok 'DBICVersion_v4'; |
60655857 |
129 | my $s = DBICVersion::Schema4->connect(@connection); |
130 | $DBICVersion::Schema4::VERSION = 2; |
cc7c22d9 |
131 | ok($s, 'DBICVersion::Schema 2 instantiates correctly'); |
132 | my $handler = DH->new({ |
133 | ignore_ddl => 1, |
134 | script_directory => $sql_dir, |
135 | schema => $s, |
38857f30 |
136 | databases => [], |
cc7c22d9 |
137 | }); |
138 | |
139 | ok($handler, 'DBIx::Class::DeploymentHandler w/2 instantiates correctly'); |
140 | |
141 | my $version = $s->schema_version(); |
142 | lives_ok { |
143 | $s->resultset('Foo')->create({ |
144 | bar => 'frew', |
145 | baz => 'frew', |
cc7c22d9 |
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 | |
168 | done_testing; |