Fixed broken comment in test (from Chris Hilton patch)
[dbsrgits/SQL-Translator.git] / t / 24yaml.t
1 #!/usr/local/bin/perl
2 # vim: set ft=perl:
3
4 use strict;
5 use Test::More;
6 use Test::Differences;
7 use Test::SQL::Translator qw(maybe_plan);
8 use SQL::Translator;
9 use FindBin '$Bin';
10
11 BEGIN {
12     maybe_plan(2,
13         'SQL::Translator::Parser::SQLite',
14         'SQL::Translator::Producer::YAML');
15 }
16
17 my $yaml = <<'YAML';
18 ---
19 schema:
20   procedures: {}
21   tables:
22     person:
23       comments: ''
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: []
34           reference_fields: []
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: []
46           reference_fields: []
47           reference_table: ''
48           type: UNIQUE
49       fields:
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:
84           data_type: varchar
85           default_value: ~
86           extra: {}
87           is_nullable: 0
88           is_primary_key: 0
89           is_unique: 1
90           name: name
91           order: 2
92           size:
93             - 20
94         person_id:
95           data_type: INTEGER
96           default_value: ~
97           extra: {}
98           is_nullable: 0
99           is_primary_key: 1
100           is_unique: 0
101           name: person_id
102           order: 1
103           size:
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:
115             - 11
116             - 2
117       indices: []
118       name: person
119       options: []
120       order: 1
121     pet:
122       comments: ''
123       constraints:
124         - deferrable: 1
125           expression: ''
126           fields: ~
127           match_type: ''
128           name: ''
129           on_delete: ''
130           on_update: ''
131           options: []
132           reference_fields: []
133           reference_table: ''
134           type: CHECK
135         - deferrable: 1
136           expression: ''
137           fields:
138             - pet_id
139             - person_id
140           match_type: ''
141           name: ''
142           on_delete: ''
143           on_update: ''
144           options: []
145           reference_fields: []
146           reference_table: ''
147           type: PRIMARY KEY
148       fields:
149         age:
150           data_type: int
151           default_value: ~
152           extra: {}
153           is_nullable: 1
154           is_primary_key: 0
155           is_unique: 0
156           name: age
157           order: 10
158           size:
159             - 0
160         name:
161           data_type: varchar
162           default_value: ~
163           extra: {}
164           is_nullable: 1
165           is_primary_key: 0
166           is_unique: 0
167           name: name
168           order: 9
169           size:
170             - 30
171         person_id:
172           data_type: int
173           default_value: ~
174           extra: {}
175           is_nullable: 0
176           is_primary_key: 1
177           is_unique: 0
178           name: person_id
179           order: 8
180           size:
181             - 0
182         pet_id:
183           data_type: int
184           default_value: ~
185           extra: {}
186           is_nullable: 0
187           is_primary_key: 1
188           is_unique: 0
189           name: pet_id
190           order: 7
191           size:
192             - 0
193       indices: []
194       name: pet
195       options: []
196       order: 2
197   triggers:
198     after:
199       action:
200         for_each: ~
201         steps:
202           - update name=name
203         when: ~
204       database_event: insert
205       fields: ~
206       name: after
207       on_table: ~
208       order: 1
209       perform_action_when: ~
210   views:
211     person_pet:
212       fields: ~
213       name: person_pet
214       order: 1
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
219 translator:
220   add_drop_table: 0
221   filename: ~
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
229   version: 0.07
230 YAML
231
232 my $file = "$Bin/data/sqlite/create.sql";
233 open FH, "<$file" or die "Can't read '$file': $!\n";
234 local $/;
235 my $data = <FH>;
236 my $tr   = SQL::Translator->new(
237     parser   => 'SQLite',
238     producer => 'YAML',
239     data     => $data,
240 );
241
242 my $out;
243 ok( $out = $tr->translate, 'Translate SQLite to YAML' );
244 eq_or_diff( $out, $yaml, 'YAML matches expected' );