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