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 | |
01342998 |
10 | use Test::More; |
7b3d00f9 |
11 | use File::Temp 'tempdir'; |
2482377b |
12 | use Test::Fatal qw(lives_ok dies_ok); |
4a65f60b |
13 | |
f3b5161e |
14 | my $dbh = DBICDHTest::dbh(); |
624e3018 |
15 | my @connection = (sub { $dbh }, { ignore_version => 1 }); |
7b3d00f9 |
16 | my $sql_dir = tempdir( CLEANUP => 1 ); |
4a65f60b |
17 | |
4a65f60b |
18 | VERSION1: { |
19 | use_ok 'DBICVersion_v1'; |
20 | my $s = DBICVersion::Schema->connect(@connection); |
21 | is $s->schema_version, '1.0', 'schema version is at 1.0'; |
22 | ok($s, 'DBICVersion::Schema 1.0 instantiates correctly'); |
23 | my $handler = Deprecated->new({ |
91adde75 |
24 | script_directory => $sql_dir, |
4a65f60b |
25 | schema => $s, |
26 | databases => 'SQLite', |
02a7b8ac |
27 | sql_translator_args => { add_drop_table => 0 }, |
4a65f60b |
28 | }); |
29 | |
30 | ok($handler, 'DBIx::Class::DeploymentHandler w/1.0 instantiates correctly'); |
31 | |
32 | my $version = $s->schema_version(); |
91557c90 |
33 | $handler->prepare_deploy(); |
4a65f60b |
34 | |
35 | dies_ok { |
36 | $s->resultset('Foo')->create({ |
37 | bar => 'frew', |
38 | }) |
39 | } 'schema not deployed'; |
da2816e2 |
40 | $handler->install({ version => '1.0' }); |
4a65f60b |
41 | dies_ok { |
42 | $handler->install; |
43 | } 'cannot install twice'; |
44 | lives_ok { |
45 | $s->resultset('Foo')->create({ |
46 | bar => 'frew', |
47 | }) |
48 | } 'schema is deployed'; |
49 | } |
50 | |
51 | VERSION2: { |
52 | use_ok 'DBICVersion_v2'; |
53 | my $s = DBICVersion::Schema->connect(@connection); |
54 | is $s->schema_version, '2.0', 'schema version is at 2.0'; |
55 | ok($s, 'DBICVersion::Schema 2.0 instantiates correctly'); |
56 | my $handler = Deprecated->new({ |
91adde75 |
57 | script_directory => $sql_dir, |
4a65f60b |
58 | schema => $s, |
59 | databases => 'SQLite', |
60 | }); |
61 | |
62 | ok($handler, 'DBIx::Class::DeploymentHandler w/2.0 instantiates correctly'); |
63 | |
64 | my $version = $s->schema_version(); |
91557c90 |
65 | $handler->prepare_deploy(); |
be140a5f |
66 | $handler->prepare_upgrade({ from_version => '1.0', to_version => $version }); |
4a65f60b |
67 | dies_ok { |
68 | $s->resultset('Foo')->create({ |
69 | bar => 'frew', |
70 | baz => 'frew', |
71 | }) |
72 | } 'schema not deployed'; |
73 | dies_ok { |
74 | $s->resultset('Foo')->create({ |
75 | bar => 'frew', |
76 | baz => 'frew', |
77 | }) |
78 | } 'schema not uppgrayyed'; |
79 | $handler->upgrade; |
80 | lives_ok { |
81 | $s->resultset('Foo')->create({ |
82 | bar => 'frew', |
83 | baz => 'frew', |
84 | }) |
85 | } 'schema is deployed'; |
86 | } |
87 | |
88 | VERSION3: { |
89 | use_ok 'DBICVersion_v3'; |
90 | my $s = DBICVersion::Schema->connect(@connection); |
91 | is $s->schema_version, '3.0', 'schema version is at 3.0'; |
92 | ok($s, 'DBICVersion::Schema 3.0 instantiates correctly'); |
93 | my $handler = Deprecated->new({ |
91adde75 |
94 | script_directory => $sql_dir, |
4a65f60b |
95 | schema => $s, |
96 | databases => 'SQLite', |
97 | }); |
98 | |
99 | ok($handler, 'DBIx::Class::DeploymentHandler w/3.0 instantiates correctly'); |
01342998 |
100 | |
4a65f60b |
101 | my $version = $s->schema_version(); |
91557c90 |
102 | $handler->prepare_deploy; |
be140a5f |
103 | $handler->prepare_upgrade({ from_version => '2.0', to_version => $version }); |
4a65f60b |
104 | dies_ok { |
105 | $s->resultset('Foo')->create({ |
106 | bar => 'frew', |
107 | baz => 'frew', |
108 | biff => 'frew', |
109 | }) |
110 | } 'schema not deployed'; |
111 | $handler->upgrade; |
112 | lives_ok { |
113 | $s->resultset('Foo')->create({ |
114 | bar => 'frew', |
115 | baz => 'frew', |
116 | biff => 'frew', |
117 | }) |
118 | } 'schema is deployed'; |
119 | } |
01342998 |
120 | |
121 | done_testing; |