Added list of constants exported to the docs.
[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 tests => 2;
6 use Test::Differences;
7 use SQL::Translator;
8 use FindBin '$Bin';
9
10 my $yaml = q/--- #YAML:1.0
11 schema:
12   procedures: {}
13   tables:
14     person:
15       comments: ''
16       fields:
17         age:
18           data_type: integer
19           default_value: ~
20           extra: {}
21           is_nullable: 1
22           is_primary_key: 0
23           is_unique: 0
24           name: age
25           order: 3
26           size:
27             - 0
28         description:
29           data_type: text
30           default_value: ~
31           extra: {}
32           is_nullable: 1
33           is_primary_key: 0
34           is_unique: 0
35           name: description
36           order: 6
37           size:
38             - 0
39         iq:
40           data_type: tinyint
41           default_value: 0
42           extra: {}
43           is_nullable: 1
44           is_primary_key: 0
45           is_unique: 0
46           name: iq
47           order: 5
48           size:
49             - 0
50         name:
51           data_type: varchar
52           default_value: ~
53           extra: {}
54           is_nullable: 0
55           is_primary_key: 0
56           is_unique: 1
57           name: name
58           order: 2
59           size:
60             - 20
61         person_id:
62           data_type: INTEGER
63           default_value: ~
64           extra: {}
65           is_nullable: 0
66           is_primary_key: 1
67           is_unique: 0
68           name: person_id
69           order: 1
70           size:
71             - 0
72         weight:
73           data_type: double
74           default_value: ~
75           extra: {}
76           is_nullable: 1
77           is_primary_key: 0
78           is_unique: 0
79           name: weight
80           order: 4
81           size:
82             - 11
83             - 2
84       indices: {}
85       name: person
86       options: []
87       order: 1
88     pet:
89       comments: ''
90       fields:
91         age:
92           data_type: int
93           default_value: ~
94           extra: {}
95           is_nullable: 1
96           is_primary_key: 0
97           is_unique: 0
98           name: age
99           order: 10
100           size:
101             - 0
102         name:
103           data_type: varchar
104           default_value: ~
105           extra: {}
106           is_nullable: 1
107           is_primary_key: 0
108           is_unique: 0
109           name: name
110           order: 9
111           size:
112             - 30
113         person_id:
114           data_type: int
115           default_value: ~
116           extra: {}
117           is_nullable: 0
118           is_primary_key: 1
119           is_unique: 0
120           name: person_id
121           order: 8
122           size:
123             - 0
124         pet_id:
125           data_type: int
126           default_value: ~
127           extra: {}
128           is_nullable: 0
129           is_primary_key: 1
130           is_unique: 0
131           name: pet_id
132           order: 7
133           size:
134             - 0
135       indices: {}
136       name: pet
137       options: []
138       order: 2
139   triggers:
140     after:
141       action:
142         for_each: ~
143         steps:
144           - update name=name
145         when: ~
146       database_event: insert
147       fields: ~
148       name: after
149       on_table: ~
150       order: 1
151       perform_action_when: ~
152   views:
153     person_pet:
154       fields: ~
155       name: person_pet
156       order: 1
157       sql: |
158         select pr.person_id, pr.name as person_name, pt.name as pet_name
159           from   person pr, pet pt
160           where  person.person_id=pet.pet_id
161 /;
162
163 my $tr = SQL::Translator->new(
164     parser   => 'SQLite',
165     producer => 'YAML',
166     filename => "$Bin/data/sqlite/create.sql",
167 );
168
169 my $out;
170 ok( $out = $tr->translate, 'Translate SQLite to YAML' );
171 eq_or_diff( $out, $yaml, 'YAML matches expected' );