Commit | Line | Data |
01342998 |
1 | #!perl |
2 | |
a65184c8 |
3 | use strict; |
4 | use warnings; |
5 | |
fe3b6dff |
6 | use lib 't/lib'; |
7 | use DBICDHTest; |
4a65f60b |
8 | use aliased 'DBIx::Class::DeploymentHandler::Deprecated'; |
9 | |
10 | use File::Path 'remove_tree'; |
01342998 |
11 | use Test::More; |
4a65f60b |
12 | use Test::Exception; |
13 | |
14 | DBICDHTest::ready; |
15 | |
16 | my $db = 'dbi:SQLite:db.db'; |
17 | my @connection = ($db, '', '', { ignore_version => 1 }); |
18 | my $sql_dir = 't/sql'; |
19 | |
4a65f60b |
20 | VERSION1: { |
21 | use_ok 'DBICVersion_v1'; |
22 | my $s = DBICVersion::Schema->connect(@connection); |
23 | is $s->schema_version, '1.0', 'schema version is at 1.0'; |
24 | ok($s, 'DBICVersion::Schema 1.0 instantiates correctly'); |
25 | my $handler = Deprecated->new({ |
26 | upgrade_directory => $sql_dir, |
27 | schema => $s, |
28 | databases => 'SQLite', |
29 | sqltargs => { add_drop_table => 0 }, |
30 | }); |
31 | |
32 | ok($handler, 'DBIx::Class::DeploymentHandler w/1.0 instantiates correctly'); |
33 | |
34 | my $version = $s->schema_version(); |
91557c90 |
35 | $handler->prepare_deploy(); |
4a65f60b |
36 | |
37 | dies_ok { |
38 | $s->resultset('Foo')->create({ |
39 | bar => 'frew', |
40 | }) |
41 | } 'schema not deployed'; |
42 | $handler->install; |
43 | dies_ok { |
44 | $handler->install; |
45 | } 'cannot install twice'; |
46 | lives_ok { |
47 | $s->resultset('Foo')->create({ |
48 | bar => 'frew', |
49 | }) |
50 | } 'schema is deployed'; |
51 | } |
52 | |
53 | VERSION2: { |
54 | use_ok 'DBICVersion_v2'; |
55 | my $s = DBICVersion::Schema->connect(@connection); |
56 | is $s->schema_version, '2.0', 'schema version is at 2.0'; |
57 | ok($s, 'DBICVersion::Schema 2.0 instantiates correctly'); |
58 | my $handler = Deprecated->new({ |
59 | upgrade_directory => $sql_dir, |
60 | schema => $s, |
61 | databases => 'SQLite', |
62 | }); |
63 | |
64 | ok($handler, 'DBIx::Class::DeploymentHandler w/2.0 instantiates correctly'); |
65 | |
66 | my $version = $s->schema_version(); |
91557c90 |
67 | $handler->prepare_deploy(); |
4a65f60b |
68 | $handler->prepare_upgrade('1.0', $version); |
69 | dies_ok { |
70 | $s->resultset('Foo')->create({ |
71 | bar => 'frew', |
72 | baz => 'frew', |
73 | }) |
74 | } 'schema not deployed'; |
75 | dies_ok { |
76 | $s->resultset('Foo')->create({ |
77 | bar => 'frew', |
78 | baz => 'frew', |
79 | }) |
80 | } 'schema not uppgrayyed'; |
81 | $handler->upgrade; |
82 | lives_ok { |
83 | $s->resultset('Foo')->create({ |
84 | bar => 'frew', |
85 | baz => 'frew', |
86 | }) |
87 | } 'schema is deployed'; |
88 | } |
89 | |
90 | VERSION3: { |
91 | use_ok 'DBICVersion_v3'; |
92 | my $s = DBICVersion::Schema->connect(@connection); |
93 | is $s->schema_version, '3.0', 'schema version is at 3.0'; |
94 | ok($s, 'DBICVersion::Schema 3.0 instantiates correctly'); |
95 | my $handler = Deprecated->new({ |
96 | upgrade_directory => $sql_dir, |
97 | schema => $s, |
98 | databases => 'SQLite', |
99 | }); |
100 | |
101 | ok($handler, 'DBIx::Class::DeploymentHandler w/3.0 instantiates correctly'); |
01342998 |
102 | |
4a65f60b |
103 | my $version = $s->schema_version(); |
91557c90 |
104 | $handler->prepare_deploy; |
4a65f60b |
105 | $handler->prepare_upgrade( '2.0', $version ); |
106 | dies_ok { |
107 | $s->resultset('Foo')->create({ |
108 | bar => 'frew', |
109 | baz => 'frew', |
110 | biff => 'frew', |
111 | }) |
112 | } 'schema not deployed'; |
113 | $handler->upgrade; |
114 | lives_ok { |
115 | $s->resultset('Foo')->create({ |
116 | bar => 'frew', |
117 | baz => 'frew', |
118 | biff => 'frew', |
119 | }) |
120 | } 'schema is deployed'; |
121 | } |
01342998 |
122 | |
123 | done_testing; |