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