faster travis builds
[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
cc7c22d9 11use Test::More;
7b3d00f9 12use File::Temp 'tempdir';
2482377b 13use Test::Fatal qw(lives_ok dies_ok);
624e3018 14use DBI;
cc7c22d9 15
f3b5161e 16my $dbh = DBICDHTest::dbh();
624e3018 17my @connection = (sub { $dbh }, { ignore_version => 1 });
7b3d00f9 18my $sql_dir = tempdir( CLEANUP => 1 );
cc7c22d9 19
20VERSION1: {
21 use_ok 'DBICVersion_v1';
22 my $s = DBICVersion::Schema->connect(@connection);
23 $DBICVersion::Schema::VERSION = 1;
24 ok($s, 'DBICVersion::Schema 1 instantiates correctly');
25 my $handler = DH->new({
26 ignore_ddl => 1,
27 script_directory => $sql_dir,
28 schema => $s,
38857f30 29 databases => [],
cc7c22d9 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;
5761fe02 36 $handler->prepare_install;
cc7c22d9 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({
60 ignore_ddl => 1,
61 script_directory => $sql_dir,
62 schema => $s,
38857f30 63 databases => [],
cc7c22d9 64 });
65
66 ok($handler, 'DBIx::Class::DeploymentHandler w/2 instantiates correctly');
67
68 my $version = $s->schema_version();
5761fe02 69 $handler->prepare_install;
cc7c22d9 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({
97 ignore_ddl => 1,
98 script_directory => $sql_dir,
99 schema => $s,
38857f30 100 databases => [],
cc7c22d9 101 });
102
103 ok($handler, 'DBIx::Class::DeploymentHandler w/3 instantiates correctly');
104
105 my $version = $s->schema_version();
5761fe02 106 $handler->prepare_install;
cc7c22d9 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({
130 ignore_ddl => 1,
131 script_directory => $sql_dir,
132 schema => $s,
38857f30 133 databases => [],
cc7c22d9 134 });
135
136 ok($handler, 'DBIx::Class::DeploymentHandler w/2 instantiates correctly');
137
138 my $version = $s->schema_version();
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';
2e3cccff 160
7b3d00f9 161 is $handler->version_storage->database_version => 2,
2e3cccff 162 'database version is down to 2';
163
cc7c22d9 164}
165
166done_testing;