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