9765eff5a94bd6708604e3d9baa4f20015fc3b68
[dbsrgits/DBIx-Class-DeploymentHandler.git] / t / 02-instantiation.t
1 #!perl
2
3 use Test::More;
4 use Test::Exception;
5
6 use lib 't/lib';
7 use DBICTest;
8 use DBIx::Class::DeploymentHandler;
9 my $db = 'dbi:SQLite:db.db';
10 my $sql_dir = 't/sql';
11
12 VERSION1: {
13         use_ok 'DBICVersion_v1';
14         my $s = DBICVersion::Schema->connect($db);
15         ok($s, 'DBICVersion::Schema 1.0 instantiates correctly');
16         my $handler = DBIx::Class::DeploymentHandler->new({
17                 upgrade_directory => $sql_dir,
18                 schema => $s,
19         });
20
21         ok($handler, 'DBIx::Class::DeploymentHandler w/1.0 instantiates correctly');
22
23         my $version = $s->schema_version();
24         $handler->create_ddl_dir( 'SQLite', $version, $sql_dir, 0);
25         ok(-e 't/sql/DBICVersion-Schema-1.0-SQLite.sql', 'DDL for 1.0 got created successfully');
26
27         dies_ok {
28                 $s->resultset('Foo')->create({
29                         bar => 'frew',
30                 })
31         } 'schema not deployed';
32         $handler->install;
33         lives_ok {
34                 $s->resultset('Foo')->create({
35                         bar => 'frew',
36                 })
37         } 'schema is deployed';
38 }
39
40 VERSION2: {
41         use_ok 'DBICVersion_v2';
42         my $s = DBICVersion::Schema->connect($db);
43         ok($s, 'DBICVersion::Schema 2.0 instantiates correctly');
44         my $handler = DBIx::Class::DeploymentHandler->new({
45                 upgrade_directory => $sql_dir,
46                 schema => $s,
47         });
48
49         ok($handler, 'DBIx::Class::DeploymentHandler w/2.0 instantiates correctly');
50
51         $version = $s->schema_version();
52         $handler->create_ddl_dir( 'SQLite', $version, $sql_dir, 0);
53         $handler->create_ddl_dir( 'SQLite', $version, $sql_dir, '1.0');
54         ok(-e 't/sql/DBICVersion-Schema-2.0-SQLite.sql', 'DDL for 2.0 got created successfully');
55         ok(-e 't/sql/DBICVersion-Schema-1.0-2.0-SQLite.sql', 'DDL for migration from 1.0 to 2.0 got created successfully');
56         dies_ok {
57                 $s->resultset('Foo')->create({
58                         bar => 'frew',
59                         baz => 'frew',
60                 })
61         } 'schema not deployed';
62         #$handler->install('1.0');
63         dies_ok {
64                 $s->resultset('Foo')->create({
65                         bar => 'frew',
66                         baz => 'frew',
67                 })
68         } 'schema not uppgrayyed';
69         $handler->upgrade_single_step('1.0', '2.0');
70         lives_ok {
71                 $s->resultset('Foo')->create({
72                         bar => 'frew',
73                         baz => 'frew',
74                 })
75         } 'schema is deployed';
76 }
77
78 VERSION3: {
79         use_ok 'DBICVersion_v3';
80         my $s = DBICVersion::Schema->connect($db);
81         ok($s, 'DBICVersion::Schema 3.0 instantiates correctly');
82         my $handler = DBIx::Class::DeploymentHandler->new({
83                 upgrade_directory => $sql_dir,
84                 schema => $s,
85         });
86
87         ok($handler, 'DBIx::Class::DeploymentHandler w/3.0 instantiates correctly');
88
89         $version = $s->schema_version();
90         $handler->create_ddl_dir( 'SQLite', $version, $sql_dir, 0);
91         $handler->create_ddl_dir( 'SQLite', $version, $sql_dir, '1.0');
92         $handler->create_ddl_dir( 'SQLite', $version, $sql_dir, '2.0');
93         ok(-e 't/sql/DBICVersion-Schema-3.0-SQLite.sql', 'DDL for 3.0 got created successfully');
94         ok(-e 't/sql/DBICVersion-Schema-1.0-3.0-SQLite.sql', 'DDL for migration from 1.0 to 3.0 got created successfully');
95         ok(-e 't/sql/DBICVersion-Schema-2.0-3.0-SQLite.sql', 'DDL for migration from 2.0 to 3.0 got created successfully');
96         dies_ok {
97                 $s->resultset('Foo')->create({
98                                 bar => 'frew',
99                                 baz => 'frew',
100                                 biff => 'frew',
101                         })
102         } 'schema not deployed';
103         $handler->upgrade;
104         lives_ok {
105                 $s->resultset('Foo')->create({
106                         bar => 'frew',
107                         baz => 'frew',
108                         biff => 'frew',
109                 })
110         } 'schema is deployed';
111 }
112
113 done_testing;
114 __END__
115
116 vim: ts=2,sw=2,expandtab