test upgrade_single_step
[dbsrgits/DBIx-Class-DeploymentHandler.git] / t / 02-instantiation.t
CommitLineData
b974984a 1#!perl
2
3use Test::More;
239acef9 4use Test::Exception;
b974984a 5
6use lib 't/lib';
7use DBICTest;
8use DBIx::Class::DeploymentHandler;
4ea147c6 9my $db = 'dbi:SQLite:db.db';
e0743c25 10my $sql_dir = 't/sql';
b974984a 11
e0743c25 12VERSION1: {
13 use_ok 'DBICVersion_v1';
4ea147c6 14 my $s = DBICVersion::Schema->connect($db);
e0743c25 15 ok($s, 'DBICVersion::Schema 1.0 instantiates correctly');
16 my $handler = DBIx::Class::DeploymentHandler->new({
4ea147c6 17 upgrade_directory => $sql_dir,
e0743c25 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');
239acef9 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';
e0743c25 38}
39
40VERSION2: {
41 use_ok 'DBICVersion_v2';
4ea147c6 42 my $s = DBICVersion::Schema->connect($db);
e0743c25 43 ok($s, 'DBICVersion::Schema 2.0 instantiates correctly');
44 my $handler = DBIx::Class::DeploymentHandler->new({
4ea147c6 45 upgrade_directory => $sql_dir,
e0743c25 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');
239acef9 56 dies_ok {
57 $s->resultset('Foo')->create({
58 bar => 'frew',
59 baz => 'frew',
60 })
61 } 'schema not deployed';
4ea147c6 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');
239acef9 70 lives_ok {
71 $s->resultset('Foo')->create({
72 bar => 'frew',
73 baz => 'frew',
74 })
75 } 'schema is deployed';
e0743c25 76}
77
78VERSION3: {
79 use_ok 'DBICVersion_v3';
4ea147c6 80 my $s = DBICVersion::Schema->connect($db);
e0743c25 81 ok($s, 'DBICVersion::Schema 3.0 instantiates correctly');
82 my $handler = DBIx::Class::DeploymentHandler->new({
4ea147c6 83 upgrade_directory => $sql_dir,
e0743c25 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');
239acef9 96 dies_ok {
97 $s->resultset('Foo')->create({
4ea147c6 98 bar => 'frew',
99 baz => 'frew',
100 biff => 'frew',
101 })
239acef9 102 } 'schema not deployed';
4ea147c6 103 $handler->upgrade_single_step('2.0', '3.0');
239acef9 104 lives_ok {
105 $s->resultset('Foo')->create({
106 bar => 'frew',
107 baz => 'frew',
108 biff => 'frew',
109 })
110 } 'schema is deployed';
e0743c25 111}
b974984a 112
113done_testing;
4ea147c6 114__END__
115
116vim: ts=2,sw=2,expandtab