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