Commit | Line | Data |
---|---|---|
d3fad399 | 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; | |
e1742702 | 8 | use FindBin '$Bin'; |
d3fad399 | 9 | |
e1742702 | 10 | my $yaml = q/--- #YAML:1.0 |
af53e4ec | 11 | schema: |
e93454af | 12 | procedures: {} |
13 | tables: | |
e1742702 | 14 | person: |
e93454af | 15 | comments: '' |
16 | fields: | |
e1742702 | 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: | |
e93454af | 51 | data_type: varchar |
e1742702 | 52 | default_value: ~ |
e93454af | 53 | extra: {} |
54 | is_nullable: 0 | |
55 | is_primary_key: 0 | |
e1742702 | 56 | is_unique: 1 |
57 | name: name | |
e93454af | 58 | order: 2 |
59 | size: | |
e1742702 | 60 | - 20 |
61 | person_id: | |
62 | data_type: INTEGER | |
e93454af | 63 | default_value: ~ |
64 | extra: {} | |
65 | is_nullable: 0 | |
66 | is_primary_key: 1 | |
67 | is_unique: 0 | |
e1742702 | 68 | name: person_id |
e93454af | 69 | order: 1 |
70 | size: | |
e1742702 | 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: | |
e93454af | 82 | - 11 |
e1742702 | 83 | - 2 |
84 | indices: {} | |
85 | name: person | |
86 | options: [] | |
87 | order: 1 | |
88 | pet: | |
89 | comments: '' | |
90 | fields: | |
91 | age: | |
92 | data_type: int | |
e93454af | 93 | default_value: ~ |
94 | extra: {} | |
95 | is_nullable: 1 | |
96 | is_primary_key: 0 | |
97 | is_unique: 0 | |
e1742702 | 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 | |
e93454af | 133 | size: |
134 | - 0 | |
135 | indices: {} | |
e1742702 | 136 | name: pet |
e93454af | 137 | options: [] |
e1742702 | 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 | |
af53e4ec | 156 | order: 1 |
e1742702 | 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 | /; | |
d3fad399 | 162 | |
d3fad399 | 163 | my $tr = SQL::Translator->new( |
e1742702 | 164 | parser => 'SQLite', |
165 | producer => 'YAML', | |
166 | filename => "$Bin/data/sqlite/create.sql", | |
d3fad399 | 167 | ); |
168 | ||
e1742702 | 169 | my $out; |
170 | ok( $out = $tr->translate, 'Translate SQLite to YAML' ); | |
171 | eq_or_diff( $out, $yaml, 'YAML matches expected' ); |