working deprecated bundle
[dbsrgits/DBIx-Class-DeploymentHandler.git] / t / lib / DBICDHTest.pm
CommitLineData
02d58ac0 1package DBICDHTest;
2
3use strict;
4use warnings;
5
6use File::Path 'remove_tree';
fe3b6dff 7use Test::More;
8use Test::Exception;
02d58ac0 9
10sub 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 18sub 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
1301;