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