Test prepare_install
[dbsrgits/DBIx-Class-DeploymentHandler.git] / t / 02-instantiation-no-ddl.t
CommitLineData
cc7c22d9 1#!perl
2
3use strict;
4use warnings;
5
6use lib 't/lib';
7use DBICDHTest;
8use DBIx::Class::DeploymentHandler;
9use aliased 'DBIx::Class::DeploymentHandler', 'DH';
10
11use File::Path 'remove_tree';
12use Test::More;
13use Test::Exception;
14
15DBICDHTest::ready;
16
17my $db = 'dbi:SQLite:db.db';
18my @connection = ($db, '', '', { ignore_version => 1 });
19my $sql_dir = 't/sql';
20
21VERSION1: {
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
55VERSION2: {
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
92VERSION3: {
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
125DOWN2: {
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
163done_testing;