change all the tests to use the new test schema namespace
[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
18 my $dbh = DBICDHTest::dbh();
19 my @connection = (sub { $dbh }, { ignore_version => 1 });
20 my $sql_dir = 't/sql';
21
22 VERSION1: {
23   use_ok 'DBICVersion_v1';
24   my $s = DBICVersion::Schema1->connect(@connection);
25   $DBICVersion::Schema1::VERSION = 1;
26   ok($s, 'DBICVersion::Schema 1 instantiates correctly');
27   my $handler = DH->new({
28     ignore_ddl => 1,
29     script_directory => $sql_dir,
30     schema => $s,
31     databases => [],
32     sql_translator_args => { add_drop_table => 0 },
33   });
34
35   ok($handler, 'DBIx::Class::DeploymentHandler w/1 instantiates correctly');
36
37   my $version = $s->schema_version;
38   $handler->prepare_install;
39
40   dies_ok {
41     $s->resultset('Foo')->create({
42       bar => 'frew',
43     })
44   } 'schema not deployed';
45   $handler->install;
46   dies_ok {
47     $handler->install;
48   } 'cannot install twice';
49   lives_ok {
50     $s->resultset('Foo')->create({
51       bar => 'frew',
52     })
53   } 'schema is deployed';
54 }
55
56 VERSION2: {
57   use_ok 'DBICVersion_v2';
58   my $s = DBICVersion::Schema2->connect(@connection);
59   $DBICVersion::Schema2::VERSION = 2;
60   ok($s, 'DBICVersion::Schema 2 instantiates correctly');
61   my $handler = DH->new({
62     ignore_ddl => 1,
63     script_directory => $sql_dir,
64     schema => $s,
65     databases => [],
66   });
67
68   ok($handler, 'DBIx::Class::DeploymentHandler w/2 instantiates correctly');
69
70   my $version = $s->schema_version();
71   $handler->prepare_install;
72 #$handler->prepare_upgrade({ from_version => 1, to_version => 2 });
73   dies_ok {
74     $s->resultset('Foo')->create({
75       bar => 'frew',
76       baz => 'frew',
77     })
78   } 'schema not deployed';
79   dies_ok {
80     $s->resultset('Foo')->create({
81       bar => 'frew',
82       baz => 'frew',
83     })
84   } 'schema not uppgrayyed';
85   $handler->upgrade;
86   lives_ok {
87     $s->resultset('Foo')->create({
88       bar => 'frew',
89       baz => 'frew',
90     })
91   } 'schema is deployed';
92 }
93
94 VERSION3: {
95   use_ok 'DBICVersion_v3';
96   my $s = DBICVersion::Schema3->connect(@connection);
97   $DBICVersion::Schema3::VERSION = 3;
98   ok($s, 'DBICVersion::Schema 3 instantiates correctly');
99   my $handler = DH->new({
100     ignore_ddl => 1,
101     script_directory => $sql_dir,
102     schema => $s,
103     databases => [],
104   });
105
106   ok($handler, 'DBIx::Class::DeploymentHandler w/3 instantiates correctly');
107
108   my $version = $s->schema_version();
109   $handler->prepare_install;
110   dies_ok {
111     $s->resultset('Foo')->create({
112         bar => 'frew',
113         baz => 'frew',
114         biff => 'frew',
115       })
116   } 'schema not deployed';
117   $handler->upgrade;
118   lives_ok {
119     $s->resultset('Foo')->create({
120       bar => 'frew',
121       baz => 'frew',
122       biff => 'frew',
123     })
124   } 'schema is deployed';
125 }
126
127 DOWN2: {
128   use_ok 'DBICVersion_v4';
129   my $s = DBICVersion::Schema4->connect(@connection);
130   $DBICVersion::Schema4::VERSION = 2;
131   ok($s, 'DBICVersion::Schema 2 instantiates correctly');
132   my $handler = DH->new({
133     ignore_ddl => 1,
134     script_directory => $sql_dir,
135     schema => $s,
136     databases => [],
137   });
138
139   ok($handler, 'DBIx::Class::DeploymentHandler w/2 instantiates correctly');
140
141   my $version = $s->schema_version();
142   lives_ok {
143     $s->resultset('Foo')->create({
144       bar => 'frew',
145       baz => 'frew',
146     })
147   } 'schema at version 3';
148   $handler->downgrade;
149   dies_ok {
150     $s->resultset('Foo')->create({
151       bar => 'frew',
152       baz => 'frew',
153       biff => 'frew',
154     })
155   } 'schema not at version 3';
156   lives_ok {
157     $s->resultset('Foo')->create({
158       bar => 'frew',
159       baz => 'frew',
160     })
161   } 'schema is at version 2';
162
163   is $handler->version_storage->database_version => 2, 
164     'database version is down to 2';
165
166 }
167
168 done_testing;