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