how did I miss this?
[dbsrgits/DBIx-Class-DeploymentHandler.git] / t / 02-instantiation.t
CommitLineData
b974984a 1#!perl
2
4a65f60b 3use strict;
4use warnings;
5
b974984a 6use lib 't/lib';
02d58ac0 7use DBICDHTest;
b974984a 8use DBIx::Class::DeploymentHandler;
4a65f60b 9use aliased 'DBIx::Class::DeploymentHandler', 'DH';
10
11use File::Path 'remove_tree';
fe3b6dff 12use Test::More;
4a65f60b 13use Test::Exception;
14
15DBICDHTest::ready;
16
f3b5161e 17my $dbh = DBICDHTest::dbh();
624e3018 18my @connection = (sub { $dbh }, { ignore_version => 1 });
4a65f60b 19my $sql_dir = 't/sql';
20
21VERSION1: {
22 use_ok 'DBICVersion_v1';
cdb45dee 23 my $s = DBICVersion::Schema1->connect(@connection);
24 $DBICVersion::Schema1::VERSION = 1;
4a65f60b 25 ok($s, 'DBICVersion::Schema 1 instantiates correctly');
26 my $handler = DH->new({
91adde75 27 script_directory => $sql_dir,
4a65f60b 28 schema => $s,
29 databases => 'SQLite',
02a7b8ac 30 sql_translator_args => { add_drop_table => 0 },
4a65f60b 31 });
32
33 ok($handler, 'DBIx::Class::DeploymentHandler w/1 instantiates correctly');
34
35 my $version = $s->schema_version;
5761fe02 36 $handler->prepare_install;
4a65f60b 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';
cdb45dee 56 my $s = DBICVersion::Schema2->connect(@connection);
57 $DBICVersion::Schema2::VERSION = 2;
4a65f60b 58 ok($s, 'DBICVersion::Schema 2 instantiates correctly');
59 my $handler = DH->new({
91adde75 60 script_directory => $sql_dir,
4a65f60b 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();
5761fe02 68 $handler->prepare_install;
be140a5f 69 $handler->prepare_upgrade({ from_version => 1, to_version => $version} );
4a65f60b 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';
cdb45dee 93 my $s = DBICVersion::Schema3->connect(@connection);
94 $DBICVersion::Schema3::VERSION = 3;
4a65f60b 95 ok($s, 'DBICVersion::Schema 3 instantiates correctly');
96 my $handler = DH->new({
91adde75 97 script_directory => $sql_dir,
4a65f60b 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();
5761fe02 105 $handler->prepare_install;
be140a5f 106 $handler->prepare_upgrade({ from_version => 2, to_version => $version });
4a65f60b 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';
cdb45dee 126 my $s_old = DBICVersion::Schema3->connect(@connection);
127 my $s_new = DBICVersion::Schema4->connect(@connection);
128 $DBICVersion::Schema4::VERSION = 2;
129 ok($s_new, 'DBICVersion::Schema 2 instantiates correctly');
4a65f60b 130 my $handler = DH->new({
91adde75 131 script_directory => $sql_dir,
cdb45dee 132 schema => $s_new,
4a65f60b 133 databases => 'SQLite',
134 });
135
136 ok($handler, 'DBIx::Class::DeploymentHandler w/2 instantiates correctly');
e0743c25 137
cdb45dee 138 my $version = $s_new->schema_version();
be140a5f 139 $handler->prepare_downgrade({ from_version => 3, to_version => $version });
4a65f60b 140 lives_ok {
cdb45dee 141 $s_old->resultset('Foo')->create({
4a65f60b 142 bar => 'frew',
143 baz => 'frew',
144 biff => 'frew',
145 })
146 } 'schema at version 3';
147 $handler->downgrade;
148 dies_ok {
cdb45dee 149 $s_old->resultset('Foo')->create({
4a65f60b 150 bar => 'frew',
151 baz => 'frew',
152 biff => 'frew',
153 })
154 } 'schema not at version 3';
155 lives_ok {
cdb45dee 156 $s_new->resultset('Foo')->create({
4a65f60b 157 bar => 'frew',
158 baz => 'frew',
159 })
160 } 'schema is at version 2';
161}
b974984a 162
163done_testing;