Added Chris Hilton's patch so version number test is based on current version and...
[dbsrgits/SQL-Translator.git] / t / 24yaml.t
CommitLineData
d3fad399 1#!/usr/local/bin/perl
2# vim: set ft=perl:
3
4use strict;
2d691ec1 5use Test::More;
d3fad399 6use Test::Differences;
2d691ec1 7use Test::SQL::Translator qw(maybe_plan);
d3fad399 8use SQL::Translator;
e1742702 9use FindBin '$Bin';
d3fad399 10
2d691ec1 11BEGIN {
12 maybe_plan(2,
13 'SQL::Translator::Parser::SQLite',
14 'SQL::Translator::Producer::YAML');
15}
16
495c5c2f 17my $sqlt_version = $SQL::Translator::VERSION;
18my $yaml = <<YAML;
6f146640 19---
af53e4ec 20schema:
e93454af 21 procedures: {}
22 tables:
e1742702 23 person:
e93454af 24 comments: ''
0919510d 25 constraints:
26 - deferrable: 1
27 expression: ''
28 fields:
29 - person_id
30 match_type: ''
31 name: ''
32 on_delete: ''
33 on_update: ''
34 options: []
e6c155dd 35 reference_fields: []
0919510d 36 reference_table: ''
37 type: PRIMARY KEY
38 - deferrable: 1
39 expression: ''
40 fields:
41 - name
42 match_type: ''
43 name: u_name
44 on_delete: ''
45 on_update: ''
46 options: []
e6c155dd 47 reference_fields: []
0919510d 48 reference_table: ''
49 type: UNIQUE
e93454af 50 fields:
e1742702 51 age:
52 data_type: integer
53 default_value: ~
54 extra: {}
55 is_nullable: 1
56 is_primary_key: 0
57 is_unique: 0
58 name: age
59 order: 3
60 size:
61 - 0
62 description:
63 data_type: text
64 default_value: ~
65 extra: {}
66 is_nullable: 1
67 is_primary_key: 0
68 is_unique: 0
69 name: description
70 order: 6
71 size:
72 - 0
73 iq:
74 data_type: tinyint
75 default_value: 0
76 extra: {}
77 is_nullable: 1
78 is_primary_key: 0
79 is_unique: 0
80 name: iq
81 order: 5
82 size:
83 - 0
84 name:
e93454af 85 data_type: varchar
e1742702 86 default_value: ~
e93454af 87 extra: {}
88 is_nullable: 0
89 is_primary_key: 0
e1742702 90 is_unique: 1
91 name: name
e93454af 92 order: 2
93 size:
e1742702 94 - 20
95 person_id:
96 data_type: INTEGER
e93454af 97 default_value: ~
98 extra: {}
99 is_nullable: 0
100 is_primary_key: 1
101 is_unique: 0
e1742702 102 name: person_id
e93454af 103 order: 1
104 size:
e1742702 105 - 0
106 weight:
107 data_type: double
108 default_value: ~
109 extra: {}
110 is_nullable: 1
111 is_primary_key: 0
112 is_unique: 0
113 name: weight
114 order: 4
115 size:
e93454af 116 - 11
e1742702 117 - 2
0919510d 118 indices: []
e1742702 119 name: person
120 options: []
121 order: 1
122 pet:
123 comments: ''
0919510d 124 constraints:
125 - deferrable: 1
126 expression: ''
127 fields: ~
128 match_type: ''
129 name: ''
130 on_delete: ''
131 on_update: ''
132 options: []
e6c155dd 133 reference_fields: []
0919510d 134 reference_table: ''
135 type: CHECK
136 - deferrable: 1
137 expression: ''
138 fields:
139 - pet_id
140 - person_id
141 match_type: ''
142 name: ''
143 on_delete: ''
144 on_update: ''
145 options: []
e6c155dd 146 reference_fields: []
0919510d 147 reference_table: ''
148 type: PRIMARY KEY
e1742702 149 fields:
150 age:
151 data_type: int
e93454af 152 default_value: ~
153 extra: {}
154 is_nullable: 1
155 is_primary_key: 0
156 is_unique: 0
e1742702 157 name: age
158 order: 10
159 size:
160 - 0
161 name:
162 data_type: varchar
163 default_value: ~
164 extra: {}
165 is_nullable: 1
166 is_primary_key: 0
167 is_unique: 0
168 name: name
169 order: 9
170 size:
171 - 30
172 person_id:
173 data_type: int
174 default_value: ~
175 extra: {}
176 is_nullable: 0
177 is_primary_key: 1
178 is_unique: 0
179 name: person_id
180 order: 8
181 size:
182 - 0
183 pet_id:
184 data_type: int
185 default_value: ~
186 extra: {}
187 is_nullable: 0
188 is_primary_key: 1
189 is_unique: 0
190 name: pet_id
191 order: 7
e93454af 192 size:
193 - 0
0919510d 194 indices: []
e1742702 195 name: pet
e93454af 196 options: []
e1742702 197 order: 2
198 triggers:
199 after:
200 action:
201 for_each: ~
202 steps:
203 - update name=name
204 when: ~
205 database_event: insert
206 fields: ~
207 name: after
208 on_table: ~
209 order: 1
210 perform_action_when: ~
211 views:
212 person_pet:
213 fields: ~
214 name: person_pet
af53e4ec 215 order: 1
e1742702 216 sql: |
217 select pr.person_id, pr.name as person_name, pt.name as pet_name
218 from person pr, pet pt
219 where person.person_id=pet.pet_id
2c05ed8e 220translator:
221 add_drop_table: 0
57e7e329 222 filename: ~
2c05ed8e 223 no_comments: 0
224 parser_args: {}
225 parser_type: SQL::Translator::Parser::SQLite
226 producer_args: {}
227 producer_type: SQL::Translator::Producer::YAML
228 show_warnings: 0
229 trace: 0
495c5c2f 230 version: $sqlt_version
2c05ed8e 231YAML
d3fad399 232
57e7e329 233my $file = "$Bin/data/sqlite/create.sql";
234open FH, "<$file" or die "Can't read '$file': $!\n";
235local $/;
236my $data = <FH>;
237my $tr = SQL::Translator->new(
e1742702 238 parser => 'SQLite',
239 producer => 'YAML',
57e7e329 240 data => $data,
d3fad399 241);
242
e1742702 243my $out;
244ok( $out = $tr->translate, 'Translate SQLite to YAML' );
245eq_or_diff( $out, $yaml, 'YAML matches expected' );