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