Stop deleting the wrong version
[dbsrgits/DBIx-Class-DeploymentHandler.git] / t / 02-instantiation-no-ddl.t
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 use DBI;
15
16 DBICDHTest::ready;
17 my $dbh = DBI->connect('dbi:SQLite::memory:');
18 my @connection = (sub { $dbh }, { 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,
30     databases => [],
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;
37   $handler->prepare_install;
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,
64     databases => [],
65   });
66
67   ok($handler, 'DBIx::Class::DeploymentHandler w/2 instantiates correctly');
68
69   my $version = $s->schema_version();
70   $handler->prepare_install;
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,
101     databases => [],
102   });
103
104   ok($handler, 'DBIx::Class::DeploymentHandler w/3 instantiates correctly');
105
106   my $version = $s->schema_version();
107   $handler->prepare_install;
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,
134     databases => [],
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   is $handler->version_storage->database_version => 2, 
163     'database version is down to 2';
164
165 }
166
167 done_testing;