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