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