e3c0a911c29a31a0e106180ff6030171d52effdf
[dbsrgits/DBIx-Class-DeploymentHandler.git] / t / deploy_methods / sql_translator_deprecated.t
1 #!perl
2
3 use Test::More;
4 use Test::Exception;
5
6 use lib 't/lib';
7 use DBICDHTest;
8 use aliased
9    'DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator::Deprecated';
10
11 use File::Spec::Functions;
12
13 my $db = 'dbi:SQLite:db.db';
14 my @connection = ($db, '', '', { ignore_version => 1 });
15 my $sql_dir = 't/sql';
16
17 DBICDHTest::ready;
18
19 VERSION1: {
20    use_ok 'DBICVersion_v1';
21    my $s = DBICVersion::Schema->connect(@connection);
22    my $dm = Deprecated->new({
23       schema            => $s,
24       upgrade_directory => $sql_dir,
25       databases         => ['SQLite'],
26       sql_translator_args          => { add_drop_table => 0 },
27    });
28
29    ok( $dm, 'DBIC::DH::DM::SQLT::Deprecated gets instantiated correctly' );
30
31    $dm->prepare_deploy;
32
33    ok(
34       -f catfile(qw( t sql DBICVersion-Schema-1.0-SQLite.sql )),
35       '1.0 schema gets generated properly'
36    );
37
38    dies_ok {
39       $s->resultset('Foo')->create({
40          bar => 'frew',
41       })
42    } 'schema not deployed';
43    $dm->deploy;
44    lives_ok {
45       $s->resultset('Foo')->create({
46          bar => 'frew',
47       })
48    } 'schema is deployed';
49 }
50
51 VERSION2: {
52    use_ok 'DBICVersion_v2';
53    my $s = DBICVersion::Schema->connect(@connection);
54    my $dm = Deprecated->new({
55       schema            => $s,
56       upgrade_directory => $sql_dir,
57       databases         => ['SQLite'],
58    });
59
60    ok(
61       $dm,
62       'DBIC::DH::DM::SQLT::Deprecated gets instantiated correctly w/ version 2.0'
63    );
64
65    $version = $s->schema_version;
66    $dm->prepare_deploy;
67    $dm->prepare_upgrade('1.0', $version, ['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    $dm->upgrade_single_step(['1.0', $version]);
81    lives_ok {
82       $s->resultset('Foo')->create({
83          bar => 'frew',
84          baz => 'frew',
85       })
86    } 'schema is deployed';
87 }
88 done_testing;
89 #vim: ts=2 sw=2 expandtab