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