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