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