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; |
14 | |
15 | DBICDHTest::ready; |
16 | |
17 | my $db = 'dbi:SQLite:db.db'; |
18 | my @connection = ($db, '', '', { ignore_version => 1 }); |
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({ |
27 | ignore_ddl => 1, |
28 | script_directory => $sql_dir, |
29 | schema => $s, |
38857f30 |
30 | databases => [], |
cc7c22d9 |
31 | sql_translator_args => { add_drop_table => 0 }, |
32 | }); |
33 | |
34 | ok($handler, 'DBIx::Class::DeploymentHandler w/1 instantiates correctly'); |
35 | |
36 | my $version = $s->schema_version; |
5761fe02 |
37 | $handler->prepare_install; |
cc7c22d9 |
38 | |
39 | dies_ok { |
40 | $s->resultset('Foo')->create({ |
41 | bar => 'frew', |
42 | }) |
43 | } 'schema not deployed'; |
44 | $handler->install; |
45 | dies_ok { |
46 | $handler->install; |
47 | } 'cannot install twice'; |
48 | lives_ok { |
49 | $s->resultset('Foo')->create({ |
50 | bar => 'frew', |
51 | }) |
52 | } 'schema is deployed'; |
53 | } |
54 | |
55 | VERSION2: { |
56 | use_ok 'DBICVersion_v2'; |
57 | my $s = DBICVersion::Schema->connect(@connection); |
58 | $DBICVersion::Schema::VERSION = 2; |
59 | ok($s, 'DBICVersion::Schema 2 instantiates correctly'); |
60 | my $handler = DH->new({ |
61 | ignore_ddl => 1, |
62 | script_directory => $sql_dir, |
63 | schema => $s, |
38857f30 |
64 | databases => [], |
cc7c22d9 |
65 | }); |
66 | |
67 | ok($handler, 'DBIx::Class::DeploymentHandler w/2 instantiates correctly'); |
68 | |
69 | my $version = $s->schema_version(); |
5761fe02 |
70 | $handler->prepare_install; |
cc7c22d9 |
71 | dies_ok { |
72 | $s->resultset('Foo')->create({ |
73 | bar => 'frew', |
74 | baz => 'frew', |
75 | }) |
76 | } 'schema not deployed'; |
77 | dies_ok { |
78 | $s->resultset('Foo')->create({ |
79 | bar => 'frew', |
80 | baz => 'frew', |
81 | }) |
82 | } 'schema not uppgrayyed'; |
83 | $handler->upgrade; |
84 | lives_ok { |
85 | $s->resultset('Foo')->create({ |
86 | bar => 'frew', |
87 | baz => 'frew', |
88 | }) |
89 | } 'schema is deployed'; |
90 | } |
91 | |
92 | VERSION3: { |
93 | use_ok 'DBICVersion_v3'; |
94 | my $s = DBICVersion::Schema->connect(@connection); |
95 | $DBICVersion::Schema::VERSION = 3; |
96 | ok($s, 'DBICVersion::Schema 3 instantiates correctly'); |
97 | my $handler = DH->new({ |
98 | ignore_ddl => 1, |
99 | script_directory => $sql_dir, |
100 | schema => $s, |
38857f30 |
101 | databases => [], |
cc7c22d9 |
102 | }); |
103 | |
104 | ok($handler, 'DBIx::Class::DeploymentHandler w/3 instantiates correctly'); |
105 | |
106 | my $version = $s->schema_version(); |
5761fe02 |
107 | $handler->prepare_install; |
cc7c22d9 |
108 | dies_ok { |
109 | $s->resultset('Foo')->create({ |
110 | bar => 'frew', |
111 | baz => 'frew', |
112 | biff => 'frew', |
113 | }) |
114 | } 'schema not deployed'; |
115 | $handler->upgrade; |
116 | lives_ok { |
117 | $s->resultset('Foo')->create({ |
118 | bar => 'frew', |
119 | baz => 'frew', |
120 | biff => 'frew', |
121 | }) |
122 | } 'schema is deployed'; |
123 | } |
124 | |
125 | DOWN2: { |
126 | use_ok 'DBICVersion_v4'; |
127 | my $s = DBICVersion::Schema->connect(@connection); |
128 | $DBICVersion::Schema::VERSION = 2; |
129 | ok($s, 'DBICVersion::Schema 2 instantiates correctly'); |
130 | my $handler = DH->new({ |
131 | ignore_ddl => 1, |
132 | script_directory => $sql_dir, |
133 | schema => $s, |
38857f30 |
134 | databases => [], |
cc7c22d9 |
135 | }); |
136 | |
137 | ok($handler, 'DBIx::Class::DeploymentHandler w/2 instantiates correctly'); |
138 | |
139 | my $version = $s->schema_version(); |
140 | lives_ok { |
141 | $s->resultset('Foo')->create({ |
142 | bar => 'frew', |
143 | baz => 'frew', |
144 | biff => 'frew', |
145 | }) |
146 | } 'schema at version 3'; |
147 | $handler->downgrade; |
148 | dies_ok { |
149 | $s->resultset('Foo')->create({ |
150 | bar => 'frew', |
151 | baz => 'frew', |
152 | biff => 'frew', |
153 | }) |
154 | } 'schema not at version 3'; |
155 | lives_ok { |
156 | $s->resultset('Foo')->create({ |
157 | bar => 'frew', |
158 | baz => 'frew', |
159 | }) |
160 | } 'schema is at version 2'; |
161 | } |
162 | |
163 | done_testing; |