Add test for closing file.
[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
e1742702 17my $yaml = q/--- #YAML:1.0
af53e4ec 18schema:
e93454af 19 procedures: {}
20 tables:
e1742702 21 person:
e93454af 22 comments: ''
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: ~
52 extra: {}
53 is_nullable: 1
54 is_primary_key: 0
55 is_unique: 0
56 name: age
57 order: 3
58 size:
59 - 0
60 description:
61 data_type: text
62 default_value: ~
63 extra: {}
64 is_nullable: 1
65 is_primary_key: 0
66 is_unique: 0
67 name: description
68 order: 6
69 size:
70 - 0
71 iq:
72 data_type: tinyint
73 default_value: 0
74 extra: {}
75 is_nullable: 1
76 is_primary_key: 0
77 is_unique: 0
78 name: iq
79 order: 5
80 size:
81 - 0
82 name:
e93454af 83 data_type: varchar
e1742702 84 default_value: ~
e93454af 85 extra: {}
86 is_nullable: 0
87 is_primary_key: 0
e1742702 88 is_unique: 1
89 name: name
e93454af 90 order: 2
91 size:
e1742702 92 - 20
93 person_id:
94 data_type: INTEGER
e93454af 95 default_value: ~
96 extra: {}
97 is_nullable: 0
98 is_primary_key: 1
99 is_unique: 0
e1742702 100 name: person_id
e93454af 101 order: 1
102 size:
e1742702 103 - 0
104 weight:
105 data_type: double
106 default_value: ~
107 extra: {}
108 is_nullable: 1
109 is_primary_key: 0
110 is_unique: 0
111 name: weight
112 order: 4
113 size:
e93454af 114 - 11
e1742702 115 - 2
0919510d 116 indices: []
e1742702 117 name: person
118 options: []
119 order: 1
120 pet:
121 comments: ''
0919510d 122 constraints:
123 - deferrable: 1
124 expression: ''
125 fields: ~
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:
197 after:
198 action:
199 for_each: ~
200 steps:
201 - update name=name
202 when: ~
203 database_event: insert
204 fields: ~
205 name: after
206 on_table: ~
207 order: 1
208 perform_action_when: ~
209 views:
210 person_pet:
211 fields: ~
212 name: person_pet
af53e4ec 213 order: 1
e1742702 214 sql: |
215 select pr.person_id, pr.name as person_name, pt.name as pet_name
216 from person pr, pet pt
217 where person.person_id=pet.pet_id
218/;
d3fad399 219
d3fad399 220my $tr = SQL::Translator->new(
e1742702 221 parser => 'SQLite',
222 producer => 'YAML',
223 filename => "$Bin/data/sqlite/create.sql",
d3fad399 224);
225
e1742702 226my $out;
227ok( $out = $tr->translate, 'Translate SQLite to YAML' );
228eq_or_diff( $out, $yaml, 'YAML matches expected' );