initial gutting of create_ddl_dir interface
[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                 databases => ['SQLite'],
20         });
21
22         ok($handler, 'DBIx::Class::DeploymentHandler w/1.0 instantiates correctly');
23
24         my $version = $s->schema_version();
25         $handler->create_ddl_dir( $version, 0);
26         ok(-e 't/sql/DBICVersion-Schema-1.0-SQLite.sql', 'DDL for 1.0 got created successfully');
27
28         dies_ok {
29                 $s->resultset('Foo')->create({
30                         bar => 'frew',
31                 })
32         } 'schema not deployed';
33         $handler->install;
34         lives_ok {
35                 $s->resultset('Foo')->create({
36                         bar => 'frew',
37                 })
38         } 'schema is deployed';
39 }
40
41 VERSION2: {
42         use_ok 'DBICVersion_v2';
43         my $s = DBICVersion::Schema->connect($db);
44         ok($s, 'DBICVersion::Schema 2.0 instantiates correctly');
45         my $handler = DBIx::Class::DeploymentHandler->new({
46                 upgrade_directory => $sql_dir,
47                 schema => $s,
48                 databases => ['SQLite'],
49         });
50
51         ok($handler, 'DBIx::Class::DeploymentHandler w/2.0 instantiates correctly');
52
53         $version = $s->schema_version();
54         $handler->create_ddl_dir($version, 0);
55         $handler->create_ddl_dir($version, '1.0');
56         ok(-e 't/sql/DBICVersion-Schema-2.0-SQLite.sql', 'DDL for 2.0 got created successfully');
57         ok(-e 't/sql/DBICVersion-Schema-1.0-2.0-SQLite.sql', 'DDL for migration from 1.0 to 2.0 got created successfully');
58         dies_ok {
59                 $s->resultset('Foo')->create({
60                         bar => 'frew',
61                         baz => 'frew',
62                 })
63         } 'schema not deployed';
64         #$handler->install('1.0');
65         dies_ok {
66                 $s->resultset('Foo')->create({
67                         bar => 'frew',
68                         baz => 'frew',
69                 })
70         } 'schema not uppgrayyed';
71         $handler->upgrade_single_step('1.0', '2.0');
72         lives_ok {
73                 $s->resultset('Foo')->create({
74                         bar => 'frew',
75                         baz => 'frew',
76                 })
77         } 'schema is deployed';
78 }
79
80 VERSION3: {
81         use_ok 'DBICVersion_v3';
82         my $s = DBICVersion::Schema->connect($db);
83         ok($s, 'DBICVersion::Schema 3.0 instantiates correctly');
84         my $handler = DBIx::Class::DeploymentHandler->new({
85                 upgrade_directory => $sql_dir,
86                 schema => $s,
87                 databases => ['SQLite'],
88         });
89
90         ok($handler, 'DBIx::Class::DeploymentHandler w/3.0 instantiates correctly');
91
92         $version = $s->schema_version();
93         $handler->create_ddl_dir( $version, 0);
94         $handler->create_ddl_dir( $version, '1.0');
95         $handler->create_ddl_dir( $version, '2.0');
96         ok(-e 't/sql/DBICVersion-Schema-3.0-SQLite.sql', 'DDL for 3.0 got created successfully');
97         ok(-e 't/sql/DBICVersion-Schema-1.0-3.0-SQLite.sql', 'DDL for migration from 1.0 to 3.0 got created successfully');
98         ok(-e 't/sql/DBICVersion-Schema-2.0-3.0-SQLite.sql', 'DDL for migration from 2.0 to 3.0 got created successfully');
99         dies_ok {
100                 $s->resultset('Foo')->create({
101                                 bar => 'frew',
102                                 baz => 'frew',
103                                 biff => 'frew',
104                         })
105         } 'schema not deployed';
106         $handler->upgrade;
107         lives_ok {
108                 $s->resultset('Foo')->create({
109                         bar => 'frew',
110                         baz => 'frew',
111                         biff => 'frew',
112                 })
113         } 'schema is deployed';
114 }
115
116 done_testing;
117 __END__
118
119 vim: ts=2,sw=2,expandtab