|
3 | 3 | RSpec.describe 'ROM::SQL::Attribute', :postgres do |
4 | 4 | include_context 'database setup' |
5 | 5 |
|
6 | | - before do |
| 6 | + setup_tables do |
7 | 7 | conn.drop_table?(:pg_people) |
8 | 8 | conn.drop_table?(:people) |
| 9 | + end |
9 | 10 |
|
| 11 | + setup_relations do |
10 | 12 | conf.relation(:people) do |
11 | 13 | schema(:pg_people, infer: true) |
12 | 14 | end |
|
17 | 19 |
|
18 | 20 | %i[json jsonb].each do |type| |
19 | 21 | describe "using arrays in #{type}" do |
20 | | - before do |
| 22 | + setup_tables do |
21 | 23 | conn.create_table :pg_people do |
22 | 24 | primary_key :id |
23 | 25 | String :name |
24 | 26 | column :fields, type |
25 | 27 | end |
| 28 | + end |
26 | 29 |
|
| 30 | + setup_relations do |
27 | 31 | conf.commands(:people) do |
28 | 32 | define(:create) |
29 | 33 | define(:update) |
30 | 34 | end |
| 35 | + end |
31 | 36 |
|
| 37 | + seed do |
32 | 38 | create_person.( |
33 | 39 | name: 'John Doe', |
34 | 40 | fields: [ |
|
100 | 106 | next unless type == :jsonb |
101 | 107 |
|
102 | 108 | describe "using maps in #{type}" do |
103 | | - before do |
| 109 | + setup_tables do |
104 | 110 | conn.create_table :pg_people do |
105 | 111 | primary_key :id |
106 | 112 | String :name |
107 | 113 | column :data, type |
108 | 114 | end |
| 115 | + end |
109 | 116 |
|
| 117 | + setup_relations do |
110 | 118 | conf.commands(:people) do |
111 | 119 | define(:create) |
112 | 120 | define(:update) |
113 | 121 | end |
| 122 | + end |
114 | 123 |
|
| 124 | + seed do |
115 | 125 | create_person.(name: 'John Doe', data: { age: 30, height: 180 }) |
116 | 126 | create_person.(name: 'Jade Doe', data: { age: 25 }) |
117 | 127 | end |
|
160 | 170 | end |
161 | 171 |
|
162 | 172 | describe 'using array types' do |
163 | | - before do |
| 173 | + setup_tables do |
164 | 174 | conn.create_table :pg_people do |
165 | 175 | primary_key :id |
166 | 176 | String :name |
167 | 177 | column :emails, 'text[]' |
168 | 178 | column :bigids, 'bigint[]' |
169 | 179 | end |
| 180 | + end |
170 | 181 |
|
| 182 | + setup_relations do |
171 | 183 | conf.commands(:people) do |
172 | 184 | define(:create) |
173 | 185 | define(:update) |
174 | 186 | end |
| 187 | + end |
175 | 188 |
|
| 189 | + seed do |
176 | 190 | create_person.(name: 'John Doe', emails: %w[john@doe.com john@example.com], bigids: [84]) |
177 | 191 | create_person.(name: 'Jade Doe', emails: %w[jade@hotmail.com], bigids: [42]) |
178 | 192 | end |
|
253 | 267 | end |
254 | 268 |
|
255 | 269 | describe 'using ltree types' do |
256 | | - before do |
| 270 | + setup_tables do |
257 | 271 | conn.execute('create extension if not exists ltree') |
258 | 272 |
|
259 | 273 | conn.create_table :pg_people do |
|
262 | 276 | column :ltree_tags, :ltree |
263 | 277 | column :parents_tags, 'ltree[]', default: [] |
264 | 278 | end |
| 279 | + end |
265 | 280 |
|
| 281 | + setup_relations do |
266 | 282 | conf.commands(:people) do |
267 | 283 | define(:create) |
268 | 284 | define(:update) |
269 | 285 | end |
| 286 | + end |
270 | 287 |
|
| 288 | + seed do |
271 | 289 | create_person.(name: 'John Wilkson', ltree_tags: ltree('Bottom'), parents_tags: [ltree('Top'), ltree('Top.Building')]) |
272 | 290 | create_person.(name: 'John Wayne', ltree_tags: ltree('Bottom.Countries'), parents_tags: [ltree('Left'), ltree('Left.Parks')]) |
273 | 291 | create_person.(name: 'John Fake', ltree_tags: ltree('Bottom.Cities'), parents_tags: [ltree('Top.Building.EmpireState'), ltree('Top.Building.EmpireState.381')]) |
|
0 commit comments