Update tests to use maybe_plan.
[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 = q/--- #YAML:1.0
18 schema:
19   procedures: {}
20   tables:
21     person:
22       comments: ''
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: []
33           reference_fields: []
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: []
45           reference_fields: []
46           reference_table: ''
47           type: UNIQUE
48       fields:
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:
83           data_type: varchar
84           default_value: ~
85           extra: {}
86           is_nullable: 0
87           is_primary_key: 0
88           is_unique: 1
89           name: name
90           order: 2
91           size:
92             - 20
93         person_id:
94           data_type: INTEGER
95           default_value: ~
96           extra: {}
97           is_nullable: 0
98           is_primary_key: 1
99           is_unique: 0
100           name: person_id
101           order: 1
102           size:
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:
114             - 11
115             - 2
116       indices: []
117       name: person
118       options: []
119       order: 1
120     pet:
121       comments: ''
122       constraints:
123         - deferrable: 1
124           expression: ''
125           fields: ~
126           match_type: ''
127           name: ''
128           on_delete: ''
129           on_update: ''
130           options: []
131           reference_fields: []
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: []
144           reference_fields: []
145           reference_table: ''
146           type: PRIMARY KEY
147       fields:
148         age:
149           data_type: int
150           default_value: ~
151           extra: {}
152           is_nullable: 1
153           is_primary_key: 0
154           is_unique: 0
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
190           size:
191             - 0
192       indices: []
193       name: pet
194       options: []
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
213       order: 1
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 /;
219
220 my $tr = SQL::Translator->new(
221     parser   => 'SQLite',
222     producer => 'YAML',
223     filename => "$Bin/data/sqlite/create.sql",
224 );
225
226 my $out;
227 ok( $out = $tr->translate, 'Translate SQLite to YAML' );
228 eq_or_diff( $out, $yaml, 'YAML matches expected' );