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