Commit | Line | Data |
02d58ac0 |
1 | #!perl |
2 | |
3 | use Test::More; |
4 | use Test::Exception; |
5 | |
6 | use lib 't/lib'; |
7 | use DBICDHTest; |
459a67e3 |
8 | use aliased 'DBIx::Class::DeploymentHandler::DeployMethod::SQL::Translator'; |
3b98a3a1 |
9 | use File::Spec::Functions; |
459a67e3 |
10 | |
11 | my $db = 'dbi:SQLite:db.db'; |
12 | my @connection = ($db, '', '', { ignore_version => 1 }); |
13 | my $sql_dir = 't/sql'; |
14 | |
15 | DBICDHTest::ready; |
16 | |
17 | VERSION1: { |
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 | |
51 | VERSION2: { |
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 |
100 | VERSION3: { |
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 |
144 | done_testing; |