rom-sql 1.0.1 → 1.0.2

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.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +10 -0
  3. data/Gemfile +1 -0
  4. data/lib/rom/sql/attribute.rb +1 -1
  5. data/lib/rom/sql/projection_dsl.rb +6 -0
  6. data/lib/rom/sql/version.rb +1 -1
  7. data/rom-sql.gemspec +1 -1
  8. data/spec/integration/association/many_to_many/custom_fks_spec.rb +9 -13
  9. data/spec/integration/association/many_to_many/from_view_spec.rb +9 -8
  10. data/spec/integration/association/many_to_many_spec.rb +103 -102
  11. data/spec/integration/association/many_to_one/custom_fks_spec.rb +6 -7
  12. data/spec/integration/association/many_to_one/from_view_spec.rb +8 -4
  13. data/spec/integration/association/many_to_one_spec.rb +61 -54
  14. data/spec/integration/association/one_to_many/custom_fks_spec.rb +7 -6
  15. data/spec/integration/association/one_to_many/from_view_spec.rb +7 -10
  16. data/spec/integration/association/one_to_many/self_ref_spec.rb +6 -6
  17. data/spec/integration/association/one_to_many_spec.rb +0 -3
  18. data/spec/integration/association/one_to_one_spec.rb +17 -11
  19. data/spec/integration/association/one_to_one_through_spec.rb +3 -5
  20. data/spec/integration/commands/create_spec.rb +33 -22
  21. data/spec/integration/commands/update_spec.rb +3 -3
  22. data/spec/integration/commands/upsert_spec.rb +1 -1
  23. data/spec/integration/gateway_spec.rb +12 -8
  24. data/spec/integration/migration_spec.rb +4 -3
  25. data/spec/integration/plugins/associates/many_to_many_spec.rb +2 -2
  26. data/spec/integration/plugins/associates_spec.rb +1 -1
  27. data/spec/integration/relation_schema_spec.rb +4 -5
  28. data/spec/integration/schema/call_spec.rb +1 -1
  29. data/spec/integration/schema/inferrer/mysql_spec.rb +22 -23
  30. data/spec/integration/schema/inferrer/postgres_spec.rb +83 -82
  31. data/spec/integration/schema/inferrer/sqlite_spec.rb +18 -19
  32. data/spec/integration/schema/inferrer_spec.rb +54 -33
  33. data/spec/integration/schema/prefix_spec.rb +9 -11
  34. data/spec/integration/schema/qualified_spec.rb +9 -11
  35. data/spec/integration/schema/rename_spec.rb +13 -15
  36. data/spec/integration/schema/view_spec.rb +2 -2
  37. data/spec/integration/sequel_api_spec.rb +1 -1
  38. data/spec/integration/setup_spec.rb +5 -5
  39. data/spec/integration/support/active_support_notifications_spec.rb +2 -2
  40. data/spec/integration/support/rails_log_subscriber_spec.rb +2 -2
  41. data/spec/shared/accounts.rb +44 -0
  42. data/spec/shared/database_setup.rb +42 -81
  43. data/spec/shared/notes.rb +21 -0
  44. data/spec/shared/posts.rb +32 -0
  45. data/spec/shared/puppies.rb +13 -0
  46. data/spec/shared/relations.rb +1 -1
  47. data/spec/shared/users.rb +29 -0
  48. data/spec/shared/users_and_tasks.rb +32 -18
  49. data/spec/spec_helper.rb +18 -30
  50. data/spec/support/env_helper.rb +25 -0
  51. data/spec/support/oracle/create_users.sql +7 -0
  52. data/spec/support/oracle/set_sys_passwords.sql +2 -0
  53. data/spec/unit/plugin/pagination_spec.rb +2 -2
  54. data/spec/unit/plugin/timestamp_spec.rb +1 -1
  55. data/spec/unit/projection_dsl_spec.rb +8 -0
  56. data/spec/unit/relation/group_spec.rb +5 -3
  57. data/spec/unit/relation/max_spec.rb +1 -1
  58. data/spec/unit/relation/select_spec.rb +7 -0
  59. metadata +33 -5
  60. data/spec/shared/users_and_accounts.rb +0 -10
@@ -1,11 +1,15 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  RSpec.describe ROM::SQL::Association::ManyToOne, '#call' do
4
+ include_context 'database setup'
5
+
6
+ before do
7
+ inferrable_relations.concat %i(destinations flights)
8
+ end
9
+
4
10
  let(:assoc_inter) { relations[:flights].associations[:inter_destination] }
5
11
  let(:assoc_final) { relations[:flights].associations[:final_destination] }
6
12
 
7
- include_context 'database setup'
8
-
9
13
  with_adapters do
10
14
  before do
11
15
  conn.create_table(:destinations) do
@@ -59,7 +63,7 @@ RSpec.describe ROM::SQL::Association::ManyToOne, '#call' do
59
63
  expect(relation.schema.map(&:to_sym)).
60
64
  to eql(%i(destinations__id destinations__name destinations__intermediate flights__id___flight_id))
61
65
 
62
- expect(relation.first).to eql(id: 2, intermediate: true, name: 'Intermediate', flight_id: 1)
66
+ expect(relation.first).to eql(id: 2, intermediate: db_true, name: 'Intermediate', flight_id: 1)
63
67
  expect(relation.count).to be(1)
64
68
 
65
69
  relation = assoc_final.call(relations)
@@ -67,7 +71,7 @@ RSpec.describe ROM::SQL::Association::ManyToOne, '#call' do
67
71
  expect(relation.schema.map(&:to_sym)).
68
72
  to eql(%i(destinations__id destinations__name destinations__intermediate flights__id___flight_id))
69
73
 
70
- expect(relation.first).to eql(id: 1, intermediate: false, name: 'Final', flight_id: 2)
74
+ expect(relation.first).to eql(id: 1, intermediate: db_false, name: 'Final', flight_id: 2)
71
75
  expect(relation.count).to be(1)
72
76
  end
73
77
  end
@@ -1,86 +1,93 @@
1
1
  RSpec.describe ROM::SQL::Association::ManyToOne, helpers: true do
2
- subject(:assoc) {
3
- ROM::SQL::Association::ManyToOne.new(:tasks, :users)
4
- }
5
-
6
- include_context 'users and tasks'
7
-
8
2
  let(:users) { container.relations[:users] }
9
3
  let(:tasks) { container.relations[:tasks] }
10
- let(:articles) { container.relations[:articles] }
11
4
 
12
5
  with_adapters do
13
- before do
14
- conf.relation(:tasks) do
15
- schema do
16
- attribute :id, ROM::SQL::Types::Serial
17
- attribute :user_id, ROM::SQL::Types::ForeignKey(:users)
18
- attribute :title, ROM::SQL::Types::String
6
+ context 'common name conventions' do
7
+ include_context 'users and tasks'
8
+ include_context 'accounts'
9
+
10
+ subject(:assoc) {
11
+ ROM::SQL::Association::ManyToOne.new(:tasks, :users)
12
+ }
13
+
14
+ before do
15
+ conf.relation(:tasks) do
16
+ schema do
17
+ attribute :id, ROM::SQL::Types::Serial
18
+ attribute :user_id, ROM::SQL::Types::ForeignKey(:users)
19
+ attribute :title, ROM::SQL::Types::String
20
+ end
19
21
  end
20
22
  end
21
- end
22
23
 
23
- describe '#result' do
24
- specify { expect(ROM::SQL::Association::ManyToOne.result).to be(:one) }
25
- end
24
+ describe '#result' do
25
+ specify { expect(ROM::SQL::Association::ManyToOne.result).to be(:one) }
26
+ end
26
27
 
27
- describe '#name' do
28
- it 'uses target by default' do
29
- expect(assoc.name).to be(:users)
28
+ describe '#name' do
29
+ it 'uses target by default' do
30
+ expect(assoc.name).to be(:users)
31
+ end
30
32
  end
31
- end
32
33
 
33
- describe '#target' do
34
- it 'builds full relation name' do
35
- assoc = ROM::SQL::Association::ManyToOne.new(:users, :tasks, relation: :foo)
34
+ describe '#target' do
35
+ it 'builds full relation name' do
36
+ assoc = ROM::SQL::Association::ManyToOne.new(:users, :tasks, relation: :foo)
36
37
 
37
- expect(assoc.name).to be(:tasks)
38
- expect(assoc.target).to eql(ROM::SQL::Association::Name[:foo, :tasks])
38
+ expect(assoc.name).to be(:tasks)
39
+ expect(assoc.target).to eql(ROM::SQL::Association::Name[:foo, :tasks])
40
+ end
39
41
  end
40
- end
41
42
 
42
- describe '#call' do
43
- it 'prepares joined relations' do
44
- relation = assoc.call(container.relations)
43
+ describe '#call' do
44
+ it 'prepares joined relations' do
45
+ relation = assoc.call(container.relations)
45
46
 
46
- expect(relation.schema.map(&:to_sym))
47
- .to eql(%i[users__id users__name tasks__id___task_id])
47
+ expect(relation.schema.map(&:to_sym))
48
+ .to eql(%i[users__id users__name tasks__id___task_id])
48
49
 
49
- expect(relation.where(user_id: 1).one).to eql(id: 1, task_id: 2, name: 'Jane')
50
+ expect(relation.where(user_id: 1).one).to eql(id: 1, task_id: 2, name: 'Jane')
50
51
 
51
- expect(relation.where(user_id: 2).one).to eql(id: 2, task_id: 1, name: 'Joe')
52
+ expect(relation.where(user_id: 2).one).to eql(id: 2, task_id: 1, name: 'Joe')
52
53
 
53
- expect(relation.to_a).to eql([
54
- { id: 2, task_id: 1, name: 'Joe' },
55
- { id: 1, task_id: 2, name: 'Jane' }
56
- ])
54
+ expect(relation.to_a).
55
+ to eql([{ id: 2, task_id: 1, name: 'Joe' },
56
+ { id: 1, task_id: 2, name: 'Jane' }])
57
+ end
57
58
  end
58
- end
59
59
 
60
- describe ROM::Plugins::Relation::SQL::AutoCombine, '#for_combine' do
61
- it 'preloads relation based on association' do
62
- relation = users.for_combine(assoc).call(tasks.call)
60
+ describe ROM::Plugins::Relation::SQL::AutoCombine, '#for_combine' do
61
+ it 'preloads relation based on association' do
62
+ relation = users.for_combine(assoc).call(tasks.call)
63
63
 
64
- expect(relation.to_a).to eql([
65
- { id: 2, task_id: 1, name: 'Joe' },
66
- { id: 1, task_id: 2, name: 'Jane' }
67
- ])
68
- end
64
+ expect(relation.to_a).
65
+ to eql([{ id: 2, task_id: 1, name: 'Joe' },
66
+ { id: 1, task_id: 2, name: 'Jane' }])
67
+ end
69
68
 
70
- it 'maintains original relation' do
71
- users.accounts.insert(user_id: 2, number: 'a1', balance: 0)
69
+ it 'maintains original relation' do
70
+ users.accounts.insert(user_id: 2, number: 'a1', balance: 0)
72
71
 
73
- relation = users.
74
- join(:accounts, user_id: :id).
75
- select_append(users.accounts[:number].as(:account_num)).
76
- for_combine(assoc).call(tasks.call)
72
+ relation = users.
73
+ join(:accounts, user_id: :id).
74
+ select_append(users.accounts[:number].as(:account_num)).
75
+ order(:account_num).
76
+ for_combine(assoc).call(tasks.call)
77
77
 
78
- expect(relation.to_a).to eql([{ id: 2, task_id: 1, name: 'Joe', account_num: 'a1' }])
78
+ expect(relation.to_a).
79
+ to eql([{ id: 2, task_id: 1, name: 'Joe', account_num: 'a1' },
80
+ { id: 1, task_id: 2, name: 'Jane', account_num: '42' }])
81
+ end
79
82
  end
80
83
  end
81
84
 
82
85
  context 'arbitrary name conventions' do
86
+ include_context 'users'
87
+ include_context 'posts'
88
+
83
89
  let(:articles_name) { ROM::Relation::Name[:articles, :posts] }
90
+ let(:articles) { container.relations[:articles] }
84
91
 
85
92
  subject(:assoc) do
86
93
  ROM::SQL::Association::ManyToOne.new(articles_name, :users)
@@ -1,12 +1,16 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  RSpec.describe ROM::SQL::Association::OneToMany, '#call' do
4
+ include_context 'users'
5
+
6
+ before do
7
+ inferrable_relations.concat %i(puzzles)
8
+ end
9
+
4
10
  subject(:assoc) do
5
11
  relations[:users].associations[:solved_puzzles]
6
12
  end
7
13
 
8
- include_context 'database setup'
9
-
10
14
  with_adapters do
11
15
  before do
12
16
  conn.create_table(:puzzles) do
@@ -25,9 +29,6 @@ RSpec.describe ROM::SQL::Association::OneToMany, '#call' do
25
29
  end
26
30
  end
27
31
 
28
- joe_id = relations[:users].insert(name: 'Joe')
29
- jane_id = relations[:users].insert(name: 'Jane')
30
-
31
32
  relations[:puzzles].insert(author_id: joe_id, text: 'P1')
32
33
  relations[:puzzles].insert(author_id: joe_id, solver_id: jane_id, text: 'P2')
33
34
  end
@@ -42,7 +43,7 @@ RSpec.describe ROM::SQL::Association::OneToMany, '#call' do
42
43
  expect(relation.schema.map(&:to_sym)).
43
44
  to eql(%i[puzzles__id puzzles__author_id puzzles__solver_id puzzles__text])
44
45
 
45
- expect(relation.first).to eql(id: 2, author_id: 1, solver_id: 2, text: 'P2')
46
+ expect(relation.first).to eql(id: 2, author_id: 2, solver_id: 1, text: 'P2')
46
47
  end
47
48
  end
48
49
  end
@@ -1,12 +1,16 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  RSpec.describe ROM::SQL::Association::OneToMany, '#call' do
4
+ include_context 'users'
5
+
6
+ before do
7
+ inferrable_relations.concat %i(puzzles)
8
+ end
9
+
4
10
  subject(:assoc) do
5
11
  relations[:users].associations[:solved_puzzles]
6
12
  end
7
13
 
8
- include_context 'database setup'
9
-
10
14
  with_adapters do
11
15
  before do
12
16
  conn.create_table(:puzzles) do
@@ -33,17 +37,10 @@ RSpec.describe ROM::SQL::Association::OneToMany, '#call' do
33
37
  end
34
38
  end
35
39
 
36
- joe_id = relations[:users].insert(name: 'Joe')
37
- jane_id = relations[:users].insert(name: 'Jane')
38
-
39
40
  relations[:puzzles].insert(user_id: joe_id, text: 'P1')
40
41
  relations[:puzzles].insert(user_id: joe_id, solved: true, text: 'P2')
41
42
  end
42
43
 
43
- after do
44
- conn.drop_table(:puzzles)
45
- end
46
-
47
44
  it 'prepares joined relations using custom view' do
48
45
  relation = assoc.call(relations)
49
46
 
@@ -51,7 +48,7 @@ RSpec.describe ROM::SQL::Association::OneToMany, '#call' do
51
48
  to eql(%i[puzzles__id puzzles__user_id puzzles__text puzzles__solved])
52
49
 
53
50
  expect(relation.count).to be(1)
54
- expect(relation.first).to eql(id: 2, user_id: 1, solved: true, text: 'P2')
51
+ expect(relation.first).to eql(id: 2, user_id: 2, solved: db_true, text: 'P2')
55
52
  end
56
53
  end
57
54
  end
@@ -1,12 +1,16 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  RSpec.describe ROM::SQL::Association::OneToMany, '#call' do
4
+ include_context 'database setup'
5
+
6
+ before do
7
+ inferrable_relations.concat %i(categories)
8
+ end
9
+
4
10
  subject(:assoc) do
5
11
  relations[:categories].associations[:children]
6
12
  end
7
13
 
8
- include_context 'database setup'
9
-
10
14
  with_adapters do
11
15
  before do
12
16
  conn.create_table(:categories) do
@@ -31,10 +35,6 @@ RSpec.describe ROM::SQL::Association::OneToMany, '#call' do
31
35
  c3_id = relations[:categories].insert(name: 'C5', parent_id: p1_id)
32
36
  end
33
37
 
34
- after do
35
- conn.drop_table(:categories)
36
- end
37
-
38
38
  it 'prepares joined relations using custom FK for a self-ref association' do
39
39
  relation = assoc.call(relations)
40
40
 
@@ -5,9 +5,6 @@ RSpec.describe ROM::SQL::Association::OneToMany do
5
5
 
6
6
  include_context 'users and tasks'
7
7
 
8
- let(:users) { container.relations[:users] }
9
- let(:tasks) { container.relations[:tasks] }
10
-
11
8
  with_adapters do
12
9
  before do
13
10
  conf.relation(:tasks) do
@@ -1,15 +1,15 @@
1
1
  RSpec.describe ROM::SQL::Association::OneToOne do
2
+ include_context 'users'
3
+ include_context 'accounts'
4
+
2
5
  subject(:assoc) {
3
6
  ROM::SQL::Association::OneToOne.new(:users, :accounts)
4
7
  }
5
8
 
6
- include_context 'users and accounts'
7
-
8
- let(:users) { container.relations[:users] }
9
- let(:accounts) { container.relations[:accounts] }
10
-
11
9
  with_adapters do
12
10
  before do
11
+ conn[:accounts].insert user_id: 1, number: '43', balance: -273.15.to_d
12
+
13
13
  conf.relation(:accounts) do
14
14
  schema do
15
15
  attribute :id, ROM::SQL::Types::Serial
@@ -33,10 +33,13 @@ RSpec.describe ROM::SQL::Association::OneToOne do
33
33
  # TODO: this if caluse should be removed when (and if) https://github.com/xerial/sqlite-jdbc/issues/112
34
34
  # will be resolved. See https://github.com/rom-rb/rom-sql/issues/49 for details
35
35
  if jruby? && sqlite?(example)
36
- expect(relation.to_a).to eql([id: 1, user_id: 1, number: '42', balance: 10_000])
36
+ expect(relation.to_a).
37
+ to eql([{ id: 1, user_id: 1, number: '42', balance: 10_000 },
38
+ { id: 2, user_id: 1, number: '43', balance: -273.15 }])
37
39
  else
38
- pending 'find out why mysql returns integer here' if !jruby? && mysql?(example)
39
- expect(relation.to_a).to eql([id: 1, user_id: 1, number: '42', balance: 10_000.to_d])
40
+ expect(relation.to_a).
41
+ to eql([{ id: 1, user_id: 1, number: '42', balance: 10_000.to_d },
42
+ { id: 2, user_id: 1, number: '43', balance: -273.15.to_d }])
40
43
  end
41
44
  end
42
45
  end
@@ -48,10 +51,13 @@ RSpec.describe ROM::SQL::Association::OneToOne do
48
51
  # TODO: this if caluse should be removed when (and if) https://github.com/xerial/sqlite-jdbc/issues/112
49
52
  # will be resolved. See https://github.com/rom-rb/rom-sql/issues/49 for details
50
53
  if jruby? && sqlite?(example)
51
- expect(relation.to_a).to eql([id: 1, user_id: 1, number: '42', balance: 10_000])
54
+ expect(relation.to_a).
55
+ to eql([{ id: 1, user_id: 1, number: '42', balance: 10_000 },
56
+ { id: 2, user_id: 1, number: '43', balance: -273.15 }])
52
57
  else
53
- pending 'find out why mysql returns integer here' if !jruby? && mysql?(example)
54
- expect(relation.to_a).to eql([id: 1, user_id: 1, number: '42', balance: 10_000.to_d])
58
+ expect(relation.to_a).
59
+ to eql([{ id: 1, user_id: 1, number: '42', balance: 10_000.to_d },
60
+ { id: 2, user_id: 1, number: '43', balance: -273.15.to_d }])
55
61
  end
56
62
  end
57
63
  end
@@ -1,13 +1,11 @@
1
1
  RSpec.describe ROM::SQL::Association::OneToOneThrough do
2
+ include_context 'users'
3
+ include_context 'accounts'
4
+
2
5
  subject(:assoc) {
3
6
  ROM::SQL::Association::OneToOneThrough.new(:users, :cards, through: :accounts)
4
7
  }
5
8
 
6
- include_context 'users and accounts'
7
-
8
- let(:users) { container.relations[:users] }
9
- let(:cards) { container.relations[:cards] }
10
-
11
9
  with_adapters do
12
10
  before do
13
11
  conf.relation(:accounts) do
@@ -1,6 +1,6 @@
1
1
  require 'dry-struct'
2
2
 
3
- RSpec.describe 'Commands / Create', :postgres do
3
+ RSpec.describe 'Commands / Create', :postgres, seeds: false do
4
4
  include_context 'relations'
5
5
 
6
6
  let(:users) { commands[:users] }
@@ -19,10 +19,6 @@ RSpec.describe 'Commands / Create', :postgres do
19
19
 
20
20
  conn.add_index :users, :name, unique: true
21
21
 
22
- conf.relation(:puppies) do
23
- schema(infer: true)
24
- end
25
-
26
22
  conf.commands(:users) do
27
23
  define(:create) do
28
24
  input Test::Params
@@ -38,10 +34,6 @@ RSpec.describe 'Commands / Create', :postgres do
38
34
  conf.commands(:tasks) do
39
35
  define(:create)
40
36
  end
41
-
42
- conf.commands(:puppies) do
43
- define(:create)
44
- end
45
37
  end
46
38
 
47
39
  with_adapters do
@@ -51,7 +43,7 @@ RSpec.describe 'Commands / Create', :postgres do
51
43
  users.create.call(name: 'Jane')
52
44
  }
53
45
 
54
- expect(result.value).to eq(id: 1, name: 'Jane')
46
+ expect(result.value).to eql(id: 1, name: 'Jane')
55
47
  end
56
48
 
57
49
  it 'creates multiple records if nothing was raised' do
@@ -71,7 +63,7 @@ RSpec.describe 'Commands / Create', :postgres do
71
63
  }
72
64
  }
73
65
 
74
- expect(result.value).to eq(id: 1, name: 'Jane')
66
+ expect(result.value).to eql(id: 1, name: 'Jane')
75
67
  end
76
68
 
77
69
  it 'creates nothing if command error was raised' do
@@ -182,12 +174,30 @@ RSpec.describe 'Commands / Create', :postgres do
182
174
  }.to raise_error(ROM::SQL::NotNullConstraintError)
183
175
  end
184
176
 
185
- it 're-raises not-null constraint violation error with nil boolean' do
186
- puppies = commands[:puppies]
177
+ # Because Oracle doesn't have boolean in SQL
178
+ if !metadata[:oracle]
179
+ context 'with puppies' do
180
+ include_context 'puppies'
187
181
 
188
- expect {
189
- puppies.try { puppies.create.call(name: 'Charlie', cute: nil) }
190
- }.to raise_error(ROM::SQL::NotNullConstraintError)
182
+ before do
183
+ conf.relation(:puppies) do
184
+ schema(infer: true)
185
+ end
186
+
187
+
188
+ conf.commands(:puppies) do
189
+ define(:create)
190
+ end
191
+ end
192
+
193
+ it 're-raises not-null constraint violation error with nil boolean' do
194
+ puppies = commands[:puppies]
195
+
196
+ expect {
197
+ puppies.try { puppies.create.call(name: 'Charlie', cute: nil) }
198
+ }.to raise_error(ROM::SQL::NotNullConstraintError)
199
+ end
200
+ end
191
201
  end
192
202
 
193
203
  it 're-raises uniqueness constraint violation error' do
@@ -239,7 +249,11 @@ RSpec.describe 'Commands / Create', :postgres do
239
249
 
240
250
  context 'with a composite pk' do
241
251
  before do
242
- conn.create_table?(:user_group) do
252
+ inferrable_relations.concat %i(user_group)
253
+ end
254
+
255
+ before do
256
+ conn.create_table(:user_group) do
243
257
  primary_key [:user_id, :group_id]
244
258
  column :user_id, Integer, null: false
245
259
  column :group_id, Integer, null: false
@@ -254,16 +268,13 @@ RSpec.describe 'Commands / Create', :postgres do
254
268
  end
255
269
  end
256
270
 
257
- after do
258
- conn.drop_table(:user_group)
259
- end
260
-
261
271
  # with a composite pk sequel returns 0 when inserting for MySQL
262
272
  if !metadata[:mysql]
263
- it 'materializes the result' do
273
+ it 'materializes the result' do |ex|
264
274
  command = container.commands[:user_group][:create]
265
275
  result = command.call(user_id: 1, group_id: 2)
266
276
 
277
+ pending "if sequel could use Oracle's RETURNING statement, that would be possible" if oracle?(ex)
267
278
  expect(result).to eql(user_id: 1, group_id: 2)
268
279
  end
269
280
  end