good inital test for dm::sqlt
[dbsrgits/DBIx-Class-DeploymentHandler.git] / t / deploy_methods / sql_translator.t
CommitLineData
02d58ac0 1#!perl
2
3use Test::More;
4use Test::Exception;
5
6use lib 't/lib';
7use DBICDHTest;
459a67e3 8use aliased 'DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator';
3b98a3a1 9use File::Spec::Functions;
459a67e3 10
11my $db = 'dbi:SQLite:db.db';
12my @connection = ($db, '', '', { ignore_version => 1 });
13my $sql_dir = 't/sql';
14
15DBICDHTest::ready;
16
17VERSION1: {
18 use_ok 'DBICVersion_v1';
19 my $s = DBICVersion::Schema->connect(@connection);
20 my $dm = Translator->new({
3b98a3a1 21 schema => $s,
459a67e3 22 upgrade_directory => $sql_dir,
3b98a3a1 23 databases => ['SQLite'],
24 sqltargs => { add_drop_table => 0 },
459a67e3 25 });
26
27 ok( $dm, 'DBIC::DH::DM::SQL::Translator gets instantiated correctly' );
3b98a3a1 28
29 $dm->prepare_install;
30
31 ok(
32 -f catfile(qw( t sql SQLite schema 1.0 001-auto.sql )),
33 '1.0 schema gets generated properly'
34 );
35
36 dies_ok {
37 $s->resultset('Foo')->create({
38 bar => 'frew',
39 })
40 } 'schema not deployed';
41
42 $dm->_deploy;
43
44 lives_ok {
45 $s->resultset('Foo')->create({
46 bar => 'frew',
47 })
48 } 'schema is deployed';
49}
50
51VERSION2: {
52 use_ok 'DBICVersion_v2';
53 my $s = DBICVersion::Schema->connect(@connection);
54 my $dm = Translator->new({
55 schema => $s,
56 upgrade_directory => $sql_dir,
57 databases => ['SQLite'],
58 sqltargs => { add_drop_table => 0 },
59 });
60
61 ok( $dm, 'DBIC::DH::SQL::Translator w/2.0 instantiates correctly');
62
63 $version = $s->schema_version();
64 $dm->prepare_install();
65 ok(
66 -f catfile(qw( t sql SQLite schema 2.0 001-auto.sql )),
67 '2.0 schema gets generated properly'
68 );
69 $dm->prepare_upgrade('1.0', $version);
70 ok(
71 -f catfile(qw( t sql SQLite up 1.0-2.0 001-auto.sql )),
72 '1.0-2.0 diff gets generated properly'
73 );
74 $dm->prepare_downgrade($version, '1.0');
75 ok(
76 -f catfile(qw( t sql SQLite down 2.0-1.0 001-auto.sql )),
77 '1.0-2.0 diff gets generated properly'
78 );
79 dies_ok {
80 $s->resultset('Foo')->create({
81 bar => 'frew',
82 baz => 'frew',
83 })
84 } 'schema not deployed';
85 dies_ok {
86 $s->resultset('Foo')->create({
87 bar => 'frew',
88 baz => 'frew',
89 })
90 } 'schema not uppgrayyed';
91 $dm->_upgrade_single_step([qw( 1.0 2.0 )]);
92 lives_ok {
93 $s->resultset('Foo')->create({
94 bar => 'frew',
95 baz => 'frew',
96 })
97 } 'schema is deployed';
459a67e3 98}
02d58ac0 99
3b98a3a1 100VERSION3: {
101 use_ok 'DBICVersion_v3';
102 my $s = DBICVersion::Schema->connect(@connection);
103 my $dm = Translator->new({
104 schema => $s,
105 upgrade_directory => $sql_dir,
106 databases => ['SQLite'],
107 sqltargs => { add_drop_table => 0 },
108 });
109
110 ok( $dm, 'DBIC::DH::SQL::Translator w/3.0 instantiates correctly');
111
112 $version = $s->schema_version();
113 $dm->prepare_install;
114 ok(
115 -f catfile(qw( t sql SQLite schema 3.0 001-auto.sql )),
116 '2.0 schema gets generated properly'
117 );
118 $dm->prepare_upgrade( '1.0', $version );
119 ok(
120 -f catfile(qw( t sql SQLite up 1.0-2.0 001-auto.sql )),
121 '1.0-3.0 diff gets generated properly'
122 );
123 $dm->prepare_upgrade( '2.0', $version );
124 ok(
125 -f catfile(qw( t sql SQLite up 1.0-2.0 001-auto.sql )),
126 '2.0-3.0 diff gets generated properly'
127 );
128 dies_ok {
129 $s->resultset('Foo')->create({
130 bar => 'frew',
131 baz => 'frew',
132 biff => 'frew',
133 })
134 } 'schema not deployed';
135 $dm->_upgrade_single_step([qw( 2.0 3.0 )]);
136 lives_ok {
137 $s->resultset('Foo')->create({
138 bar => 'frew',
139 baz => 'frew',
140 biff => 'frew',
141 })
142 } 'schema is deployed';
143}
02d58ac0 144done_testing;