torque-postgresql 3.0.1 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -43,18 +43,19 @@ RSpec.describe 'Enum' do
43
43
  end
44
44
 
45
45
  context 'on schema' do
46
+ let(:dump_result) do
47
+ ActiveRecord::SchemaDumper.dump(connection, (dump_result = StringIO.new))
48
+ dump_result.string
49
+ end
50
+
46
51
  it 'can be used on tables' do
47
- dump_io = StringIO.new
48
52
  checker = /t\.enum +"conflicts", +array: true, +enum_type: "conflicts"/
49
- ActiveRecord::SchemaDumper.dump(connection, dump_io)
50
- expect(dump_io.string).to match checker
53
+ expect(dump_result).to match checker
51
54
  end
52
55
 
53
56
  xit 'can have a default value as an array of symbols' do
54
- dump_io = StringIO.new
55
57
  checker = /t\.enum +"types", +default: \[:A, :B\], +array: true, +enum_type: "types"/
56
- ActiveRecord::SchemaDumper.dump(connection, dump_io)
57
- expect(dump_io.string).to match checker
58
+ expect(dump_result).to match checker
58
59
  end
59
60
  end
60
61
 
@@ -0,0 +1,92 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'Schema' do
4
+ let(:connection) { ActiveRecord::Base.connection }
5
+
6
+ before do
7
+ connection.instance_variable_set(:@schmeas_blacklist, nil)
8
+ connection.instance_variable_set(:@schmeas_whitelist, nil)
9
+ end
10
+
11
+ context 'on migration' do
12
+ it 'can check for existance' do
13
+ expect(connection.schema_exists?(:information_schema)).to be_falsey
14
+ expect(connection.schema_exists?(:information_schema, filtered: false)).to be_truthy
15
+ end
16
+
17
+ it 'can be created' do
18
+ expect(connection.schema_exists?(:legacy, filtered: false)).to be_falsey
19
+ connection.create_schema(:legacy)
20
+ expect(connection.schema_exists?(:legacy, filtered: false)).to be_truthy
21
+ end
22
+
23
+ it 'can be deleted' do
24
+ expect(connection.schema_exists?(:legacy, filtered: false)).to be_falsey
25
+
26
+ connection.create_schema(:legacy)
27
+ expect(connection.schema_exists?(:legacy, filtered: false)).to be_truthy
28
+
29
+ connection.drop_schema(:legacy)
30
+ expect(connection.schema_exists?(:legacy, filtered: false)).to be_falsey
31
+ end
32
+
33
+ it 'works with whitelist' do
34
+ expect(connection.schema_exists?(:legacy)).to be_falsey
35
+ connection.create_schema(:legacy)
36
+
37
+ expect(connection.schema_exists?(:legacy)).to be_falsey
38
+ expect(connection.schema_exists?(:legacy, filtered: false)).to be_truthy
39
+
40
+ connection.schemas_whitelist.push('legacy')
41
+ expect(connection.schema_exists?(:legacy)).to be_truthy
42
+ end
43
+ end
44
+
45
+ context 'on schema' do
46
+ let(:dump_result) do
47
+ ActiveRecord::SchemaDumper.dump(connection, (dump_result = StringIO.new))
48
+ dump_result.string
49
+ end
50
+
51
+ it 'does not add when there is no extra schemas' do
52
+ connection.drop_schema(:internal, force: :cascade)
53
+ expect(dump_result).not_to match /Custom schemas defined in this database/
54
+ end
55
+
56
+ it 'does not include tables from blacklisted schemas' do
57
+ connection.schemas_blacklist.push('internal')
58
+ expect(dump_result).not_to match /create_table \"users\",.*schema: +"internal"/
59
+ end
60
+
61
+ context 'with internal schema whitelisted' do
62
+ before { connection.schemas_whitelist.push('internal') }
63
+
64
+ it 'dumps the schemas' do
65
+ expect(dump_result).to match /create_schema \"internal\"/
66
+ end
67
+
68
+ it 'shows the internal users table in the connection tables list' do
69
+ expect(connection.tables).to include('internal.users')
70
+ end
71
+
72
+ it 'dumps tables on whitelisted schemas' do
73
+ expect(dump_result).to match /create_table \"users\",.*schema: +"internal"/
74
+ end
75
+ end
76
+ end
77
+
78
+ context 'on relation' do
79
+ let(:model) { Internal::User }
80
+
81
+ it 'adds the schema to the query' do
82
+ expect(model.all.to_sql).to match(/FROM "internal"."users"/)
83
+ end
84
+
85
+ it 'can load the schema from the module' do
86
+ allow(Internal).to receive(:schema).and_return('internal')
87
+ allow(model).to receive(:schema).and_return(nil)
88
+
89
+ expect(model.all.to_sql).to match(/FROM "internal"."users"/)
90
+ end
91
+ end
92
+ end
@@ -73,37 +73,33 @@ RSpec.describe 'TableInheritance' do
73
73
  end
74
74
 
75
75
  context 'on schema' do
76
- it 'dumps single inheritance with body' do
77
- dump_io = StringIO.new
78
- ActiveRecord::SchemaDumper.dump(connection, dump_io)
76
+ let(:dump_result) do
77
+ ActiveRecord::SchemaDumper.dump(connection, (dump_result = StringIO.new))
78
+ dump_result.string
79
+ end
79
80
 
81
+ it 'dumps single inheritance with body' do
80
82
  parts = '"activity_books"'
81
83
  parts << ', id: false'
82
84
  parts << ', force: :cascade'
83
- parts << ', inherits: :activities'
84
- expect(dump_io.string).to match(/create_table #{parts} do /)
85
+ parts << ', inherits: "activities"'
86
+ expect(dump_result).to match(/create_table #{parts} do /)
85
87
  end
86
88
 
87
89
  it 'dumps single inheritance without body' do
88
- dump_io = StringIO.new
89
- ActiveRecord::SchemaDumper.dump(connection, dump_io)
90
-
91
90
  parts = '"activity_post_samples"'
92
91
  parts << ', id: false'
93
92
  parts << ', force: :cascade'
94
- parts << ', inherits: :activity_posts'
95
- expect(dump_io.string).to match(/create_table #{parts}(?! do \|t\|)/)
93
+ parts << ', inherits: "activity_posts"'
94
+ expect(dump_result).to match(/create_table #{parts}(?! do \|t\|)/)
96
95
  end
97
96
 
98
97
  it 'dumps multiple inheritance' do
99
- dump_io = StringIO.new
100
- ActiveRecord::SchemaDumper.dump(connection, dump_io)
101
-
102
98
  parts = '"activity_posts"'
103
99
  parts << ', id: false'
104
100
  parts << ', force: :cascade'
105
- parts << ', inherits: (\[:images, :activities\]|\[:activities, :images\])'
106
- expect(dump_io.string).to match(/create_table #{parts}/)
101
+ parts << ', inherits: (\["images", "activities"\]|\["activities", "images"\])'
102
+ expect(dump_result).to match(/create_table #{parts}/)
107
103
  end
108
104
  end
109
105
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: torque-postgresql
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1
4
+ version: 3.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carlos Silva
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-11 00:00:00.000000000 Z
11
+ date: 2022-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -155,7 +155,7 @@ dependencies:
155
155
  description: Add support to complex resources of PostgreSQL, like data types, array
156
156
  associations, and auxiliary statements (CTE)
157
157
  email:
158
- - carlinhus.fsilva@gmail.com
158
+ - me@carlosfsilva.com
159
159
  executables: []
160
160
  extensions: []
161
161
  extra_rdoc_files: []
@@ -208,6 +208,7 @@ files:
208
208
  - lib/torque/postgresql/attributes/period.rb
209
209
  - lib/torque/postgresql/autosave_association.rb
210
210
  - lib/torque/postgresql/auxiliary_statement.rb
211
+ - lib/torque/postgresql/auxiliary_statement/recursive.rb
211
212
  - lib/torque/postgresql/auxiliary_statement/settings.rb
212
213
  - lib/torque/postgresql/base.rb
213
214
  - lib/torque/postgresql/collector.rb
@@ -232,6 +233,7 @@ files:
232
233
  - lib/torque/postgresql/relation/inheritance.rb
233
234
  - lib/torque/postgresql/relation/merger.rb
234
235
  - lib/torque/postgresql/schema_cache.rb
236
+ - lib/torque/postgresql/table_name.rb
235
237
  - lib/torque/postgresql/version.rb
236
238
  - spec/en.yml
237
239
  - spec/factories/authors.rb
@@ -250,10 +252,12 @@ files:
250
252
  - spec/models/activity_post/sample.rb
251
253
  - spec/models/author.rb
252
254
  - spec/models/author_journalist.rb
255
+ - spec/models/category.rb
253
256
  - spec/models/comment.rb
254
257
  - spec/models/course.rb
255
258
  - spec/models/geometry.rb
256
259
  - spec/models/guest_comment.rb
260
+ - spec/models/internal/user.rb
257
261
  - spec/models/item.rb
258
262
  - spec/models/post.rb
259
263
  - spec/models/question.rb
@@ -280,13 +284,18 @@ files:
280
284
  - spec/tests/period_spec.rb
281
285
  - spec/tests/quoting_spec.rb
282
286
  - spec/tests/relation_spec.rb
287
+ - spec/tests/schema_spec.rb
283
288
  - spec/tests/table_inheritance_spec.rb
284
289
  homepage: https://github.com/crashtech/torque-postgresql
285
290
  licenses:
286
291
  - MIT
287
- metadata: {}
292
+ metadata:
293
+ source_code_uri: https://github.com/crashtech/torque-postgresql
294
+ bug_tracker_uri: https://github.com/crashtech/torque-postgresql/issues
288
295
  post_install_message:
289
- rdoc_options: []
296
+ rdoc_options:
297
+ - "--title"
298
+ - Torque PostgreSQL
290
299
  require_paths:
291
300
  - lib
292
301
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -322,10 +331,12 @@ test_files:
322
331
  - spec/models/activity_post.rb
323
332
  - spec/models/author.rb
324
333
  - spec/models/author_journalist.rb
334
+ - spec/models/category.rb
325
335
  - spec/models/comment.rb
326
336
  - spec/models/course.rb
327
337
  - spec/models/geometry.rb
328
338
  - spec/models/guest_comment.rb
339
+ - spec/models/internal/user.rb
329
340
  - spec/models/item.rb
330
341
  - spec/models/post.rb
331
342
  - spec/models/question.rb
@@ -352,4 +363,5 @@ test_files:
352
363
  - spec/tests/period_spec.rb
353
364
  - spec/tests/quoting_spec.rb
354
365
  - spec/tests/relation_spec.rb
366
+ - spec/tests/schema_spec.rb
355
367
  - spec/tests/table_inheritance_spec.rb