rom 0.7.1 → 0.8.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.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +5 -8
  4. data/CHANGELOG.md +28 -1
  5. data/CODE_OF_CONDUCT.md +13 -0
  6. data/Gemfile +2 -2
  7. data/lib/rom.rb +1 -1
  8. data/lib/rom/command.rb +7 -5
  9. data/lib/rom/command_registry.rb +1 -1
  10. data/lib/rom/commands.rb +0 -2
  11. data/lib/rom/commands/abstract.rb +55 -25
  12. data/lib/rom/commands/composite.rb +13 -1
  13. data/lib/rom/commands/delete.rb +0 -8
  14. data/lib/rom/commands/graph.rb +102 -0
  15. data/lib/rom/commands/graph/class_interface.rb +69 -0
  16. data/lib/rom/commands/lazy.rb +87 -0
  17. data/lib/rom/constants.rb +22 -0
  18. data/lib/rom/env.rb +48 -18
  19. data/lib/rom/gateway.rb +132 -0
  20. data/lib/rom/global.rb +19 -19
  21. data/lib/rom/header.rb +42 -16
  22. data/lib/rom/header/attribute.rb +37 -15
  23. data/lib/rom/lint/gateway.rb +94 -0
  24. data/lib/rom/lint/spec.rb +15 -3
  25. data/lib/rom/lint/test.rb +45 -14
  26. data/lib/rom/mapper.rb +23 -10
  27. data/lib/rom/mapper/attribute_dsl.rb +157 -18
  28. data/lib/rom/memory.rb +1 -1
  29. data/lib/rom/memory/commands.rb +10 -8
  30. data/lib/rom/memory/dataset.rb +22 -2
  31. data/lib/rom/memory/{repository.rb → gateway.rb} +10 -10
  32. data/lib/rom/pipeline.rb +2 -1
  33. data/lib/rom/processor/transproc.rb +105 -14
  34. data/lib/rom/relation.rb +4 -4
  35. data/lib/rom/relation/class_interface.rb +19 -13
  36. data/lib/rom/relation/graph.rb +22 -0
  37. data/lib/rom/relation/lazy.rb +5 -3
  38. data/lib/rom/repository.rb +9 -118
  39. data/lib/rom/setup.rb +21 -14
  40. data/lib/rom/setup/finalize.rb +19 -19
  41. data/lib/rom/setup_dsl/relation.rb +10 -1
  42. data/lib/rom/support/deprecations.rb +21 -3
  43. data/lib/rom/support/enumerable_dataset.rb +1 -1
  44. data/lib/rom/version.rb +1 -1
  45. data/rom.gemspec +2 -4
  46. data/spec/integration/commands/delete_spec.rb +6 -0
  47. data/spec/integration/commands/graph_spec.rb +235 -0
  48. data/spec/integration/mappers/combine_spec.rb +14 -5
  49. data/spec/integration/mappers/definition_dsl_spec.rb +6 -1
  50. data/spec/integration/mappers/exclude_spec.rb +28 -0
  51. data/spec/integration/mappers/fold_spec.rb +16 -0
  52. data/spec/integration/mappers/group_spec.rb +0 -22
  53. data/spec/integration/mappers/prefix_separator_spec.rb +54 -0
  54. data/spec/integration/mappers/prefix_spec.rb +50 -0
  55. data/spec/integration/mappers/reusing_mappers_spec.rb +21 -0
  56. data/spec/integration/mappers/step_spec.rb +120 -0
  57. data/spec/integration/mappers/unfold_spec.rb +93 -0
  58. data/spec/integration/mappers/ungroup_spec.rb +127 -0
  59. data/spec/integration/mappers/unwrap_spec.rb +2 -2
  60. data/spec/integration/multi_repo_spec.rb +11 -11
  61. data/spec/integration/repositories/setting_logger_spec.rb +2 -2
  62. data/spec/integration/setup_spec.rb +11 -1
  63. data/spec/shared/command_behavior.rb +18 -0
  64. data/spec/shared/materializable.rb +4 -2
  65. data/spec/shared/users_and_tasks.rb +3 -3
  66. data/spec/test/memory_repository_lint_test.rb +4 -4
  67. data/spec/unit/rom/commands/graph_spec.rb +198 -0
  68. data/spec/unit/rom/commands/lazy_spec.rb +88 -0
  69. data/spec/unit/rom/commands_spec.rb +2 -2
  70. data/spec/unit/rom/env_spec.rb +26 -0
  71. data/spec/unit/rom/gateway_spec.rb +90 -0
  72. data/spec/unit/rom/global_spec.rb +4 -3
  73. data/spec/unit/rom/mapper/dsl_spec.rb +42 -1
  74. data/spec/unit/rom/mapper_spec.rb +4 -1
  75. data/spec/unit/rom/memory/commands/create_spec.rb +21 -0
  76. data/spec/unit/rom/memory/commands/delete_spec.rb +21 -0
  77. data/spec/unit/rom/memory/commands/update_spec.rb +21 -0
  78. data/spec/unit/rom/memory/relation_spec.rb +42 -10
  79. data/spec/unit/rom/memory/repository_spec.rb +3 -3
  80. data/spec/unit/rom/processor/transproc_spec.rb +75 -0
  81. data/spec/unit/rom/relation/lazy/combine_spec.rb +33 -4
  82. data/spec/unit/rom/relation/lazy_spec.rb +9 -1
  83. data/spec/unit/rom/repository_spec.rb +4 -63
  84. data/spec/unit/rom/setup_spec.rb +19 -5
  85. metadata +28 -38
  86. data/.ruby-version +0 -1
  87. data/lib/rom/lint/repository.rb +0 -94
@@ -2,11 +2,11 @@ require 'spec_helper'
2
2
  require 'rom/lint/spec'
3
3
  require 'rom/memory'
4
4
 
5
- describe ROM::Memory::Repository do
6
- let(:repository) { ROM::Memory::Repository }
5
+ describe ROM::Memory::Gateway do
6
+ let(:gateway) { ROM::Memory::Gateway }
7
7
  let(:uri) { nil }
8
8
 
9
- it_behaves_like "a rom repository" do
9
+ it_behaves_like "a rom gateway" do
10
10
  let(:identifier) { :memory }
11
11
  end
12
12
  end
@@ -269,6 +269,81 @@ describe ROM::Processor::Transproc do
269
269
  end
270
270
  end
271
271
 
272
+ context 'unwrapping tuples' do
273
+ let(:relation) do
274
+ [
275
+ { 'user' => { 'name' => 'Leo', 'task' => { 'title' => 'Task 1' } } },
276
+ { 'user' => { 'name' => 'Joe', 'task' => { 'title' => 'Task 2' } } }
277
+ ]
278
+ end
279
+
280
+ context 'when no mapping is needed' do
281
+ let(:attributes) do
282
+ [
283
+ ['user', type: :hash, unwrap: true, header: [['name'], ['task']]]
284
+ ]
285
+ end
286
+
287
+ it 'returns unwrapped tuples' do
288
+ expect(transproc[relation]).to eql([
289
+ { 'name' => 'Leo', 'task' => { 'title' => 'Task 1' } },
290
+ { 'name' => 'Joe', 'task' => { 'title' => 'Task 2' } }
291
+ ])
292
+ end
293
+ end
294
+
295
+ context 'partially' do
296
+ context 'without renaming the rest of the wrap' do
297
+ let(:attributes) do
298
+ [
299
+ ['user', type: :hash, unwrap: true, header: [['task']]]
300
+ ]
301
+ end
302
+
303
+ it 'returns unwrapped tuples' do
304
+ expect(transproc[relation]).to eql([
305
+ { 'user' => { 'name' => 'Leo' }, 'task' => { 'title' => 'Task 1' } },
306
+ { 'user' => { 'name' => 'Joe' }, 'task' => { 'title' => 'Task 2' } }
307
+ ])
308
+ end
309
+ end
310
+
311
+ context 'with renaming the rest of the wrap' do
312
+ let(:attributes) do
313
+ [
314
+ ['man', from: 'user', type: :hash, unwrap: true, header: [['task']]]
315
+ ]
316
+ end
317
+
318
+ it 'returns unwrapped tuples' do
319
+ expect(transproc[relation]).to eql([
320
+ { 'man' => { 'name' => 'Leo' }, 'task' => { 'title' => 'Task 1' } },
321
+ { 'man' => { 'name' => 'Joe' }, 'task' => { 'title' => 'Task 2' } }
322
+ ])
323
+ end
324
+ end
325
+ end
326
+
327
+ context 'deeply' do
328
+ let(:attributes) do
329
+ [
330
+ ['user', type: :hash, unwrap: true, header: [
331
+ ['name'],
332
+ ['title'],
333
+ ['task', type: :hash, unwrap: true, header: [['title']]]
334
+ ]]
335
+ ]
336
+ end
337
+
338
+ it 'returns unwrapped tuples' do
339
+ expect(transproc[relation]).to eql([
340
+ { 'name' => 'Leo', 'title' => 'Task 1' },
341
+ { 'name' => 'Joe', 'title' => 'Task 2' }
342
+ ])
343
+ end
344
+ end
345
+ end
346
+
272
347
  context 'grouping tuples' do
273
348
  let(:relation) do
274
349
  [
@@ -36,8 +36,8 @@ describe ROM::Relation::Lazy, '#combine' do
36
36
  end
37
37
  end
38
38
 
39
- setup.repositories[:default].dataset(:tags).insert(task: 'be cool', name: 'red')
40
- setup.repositories[:default].dataset(:tags).insert(task: 'be cool', name: 'green')
39
+ setup.gateways[:default].dataset(:tags).insert(task: 'be cool', name: 'red')
40
+ setup.gateways[:default].dataset(:tags).insert(task: 'be cool', name: 'green')
41
41
  end
42
42
 
43
43
  let(:users) { rom.relation(:users) }
@@ -85,6 +85,12 @@ describe ROM::Relation::Lazy, '#combine' do
85
85
  }
86
86
  }
87
87
 
88
+ it 'raises error when composite relation is passed as a node' do
89
+ expect {
90
+ users.combine(tasks >> proc {})
91
+ }.to raise_error(ROM::UnsupportedRelationError)
92
+ end
93
+
88
94
  it 'supports more than one eagerly-loaded relation' do
89
95
  expected = [
90
96
  {
@@ -101,7 +107,30 @@ describe ROM::Relation::Lazy, '#combine' do
101
107
  ]
102
108
 
103
109
  user_with_tasks_and_tags = users.by_name('Jane')
104
- .combine(tasks.for_users, tags.for_users)
110
+ .combine(tasks.for_users, tags.for_users)
111
+
112
+ result = user_with_tasks_and_tags >> map_user_with_tasks_and_tags
113
+
114
+ expect(result).to match_array(expected)
115
+ end
116
+
117
+ it 'supports more than one eagerly-loaded relation via chaining' do
118
+ expected = [
119
+ {
120
+ name: 'Jane',
121
+ email: 'jane@doe.org',
122
+ tasks: [
123
+ { name: 'Jane', title: 'be cool', priority: 2 }
124
+ ],
125
+ tags: [
126
+ { task: 'be cool', name: 'red', user: 'Jane' },
127
+ { task: 'be cool', name: 'green', user: 'Jane' }
128
+ ]
129
+ }
130
+ ]
131
+
132
+ user_with_tasks_and_tags = users.by_name('Jane')
133
+ .combine(tasks.for_users).combine(tags.for_users)
105
134
 
106
135
  result = user_with_tasks_and_tags >> map_user_with_tasks_and_tags
107
136
 
@@ -121,7 +150,7 @@ describe ROM::Relation::Lazy, '#combine' do
121
150
  ]
122
151
 
123
152
  user_with_tasks = users.by_name('Jane')
124
- .combine(tasks.for_users.combine(tags.for_tasks))
153
+ .combine(tasks.for_users.combine(tags.for_tasks))
125
154
 
126
155
  result = user_with_tasks >> map_user_with_tasks
127
156
 
@@ -49,6 +49,14 @@ describe ROM::Relation::Lazy do
49
49
  let(:relation) { users }
50
50
  end
51
51
 
52
+ describe '#map_with' do
53
+ it 'raises error when unknown mapper was selected' do
54
+ expect {
55
+ users.as(:not_here)
56
+ }.to raise_error(ROM::MapperMissingError, /not_here/)
57
+ end
58
+ end
59
+
52
60
  describe '#method_missing' do
53
61
  it 'forwards to relation and auto-curries' do
54
62
  relation = users.by_name_and_email_sorted('Jane')
@@ -80,7 +88,7 @@ describe ROM::Relation::Lazy do
80
88
  end
81
89
 
82
90
  it 'returns original response if it is not a relation' do
83
- expect(users.repository).to be(:default)
91
+ expect(users.gateway).to be(:default)
84
92
  end
85
93
 
86
94
  it 'raises NoMethodError when relation does not respond to a method' do
@@ -1,71 +1,12 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe ROM::Repository do
4
- describe '.setup' do
5
- it 'sets up a repository based on a type' do
6
- repository_class = Class.new(ROM::Repository) do
7
- attr_reader :args
8
4
 
9
- def initialize(*args)
10
- @args = args
11
- end
12
- end
13
-
14
- allow(ROM::Repository).to receive(:class_from_symbol)
15
- .with(:wormhole).and_return(repository_class)
16
-
17
- args = %w(hello world)
18
- repository = ROM::Repository.setup(:wormhole, *args)
19
-
20
- expect(repository).to be_instance_of(repository_class)
21
- expect(repository.args).to eq(args)
22
- end
23
-
24
- it 'raises an exception if the type is not supported' do
25
- expect {
26
- ROM::Repository.setup(:bogus, "memory://test")
27
- }.to raise_error(ROM::AdapterLoadError, /bogus/)
28
- end
29
-
30
- it 'accepts a repository instance' do
31
- repository = ROM::Repository.new
32
- expect(ROM::Repository.setup(repository)).to be(repository)
33
- end
34
-
35
- it 'raises an exception if instance and arguments are passed' do
36
- repository = ROM::Repository.new
37
-
38
- expect { ROM::Repository.setup(repository, 'foo://bar') }.to raise_error(
39
- ArgumentError,
40
- "Can't accept arguments when passing an instance"
41
- )
42
- end
43
-
44
- it 'raises an exception if a URI string is passed' do
45
- expect { ROM::Repository.setup('memory://test') }.to raise_error(
46
- ArgumentError,
47
- /URIs without an explicit scheme are not supported anymore/
48
- )
49
- end
5
+ it "warns when inherited from" do
6
+ expect {
7
+ Class.new(ROM::Repository)
8
+ }.to output(/inherit from ROM::Gateway/).to_stderr
50
9
  end
51
10
 
52
- describe '.class_from_symbol' do
53
- it 'instantiates a repository based on type' do
54
- klass = ROM::Repository.class_from_symbol(:memory)
55
- expect(klass).to be(ROM::Memory::Repository)
56
- end
57
11
 
58
- it 'raises an exception if the type is not supported' do
59
- expect { ROM::Repository.class_from_symbol(:bogus) }
60
- .to raise_error(ROM::AdapterLoadError, /bogus/)
61
- end
62
- end
63
-
64
- describe '#disconnect' do
65
- it 'does nothing' do
66
- repository_class = Class.new(ROM::Repository)
67
- repository = repository_class.new
68
- expect(repository.disconnect).to be(nil)
69
- end
70
- end
71
12
  end
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe ROM::Setup do
4
4
  describe '#finalize' do
5
- context 'with repository that supports schema inferring' do
5
+ context 'with gateway that supports schema inferring' do
6
6
  it 'builds relation from inferred schema' do
7
7
  setup = ROM.setup(:memory)
8
8
  repo = setup.default
@@ -93,8 +93,8 @@ describe ROM::Setup do
93
93
  let(:setup) { ROM::Setup.new({}) }
94
94
  let(:env) { setup.finalize }
95
95
 
96
- it 'builds empty repositories' do
97
- expect(env.repositories).to eql({})
96
+ it 'builds empty gateways' do
97
+ expect(env.gateways).to eql({})
98
98
  end
99
99
 
100
100
  it 'builds empty relations' do
@@ -112,7 +112,7 @@ describe ROM::Setup do
112
112
  end
113
113
 
114
114
  describe '#method_missing' do
115
- it 'returns a repository if it is defined' do
115
+ it 'returns a gateway if it is defined' do
116
116
  repo = double('repo')
117
117
  setup = ROM::Setup.new(repo: repo)
118
118
 
@@ -127,7 +127,7 @@ describe ROM::Setup do
127
127
  end
128
128
 
129
129
  describe '#[]' do
130
- it 'returns a repository if it is defined' do
130
+ it 'returns a gateway if it is defined' do
131
131
  repo = double('repo')
132
132
  setup = ROM::Setup.new(repo: repo)
133
133
 
@@ -140,4 +140,18 @@ describe ROM::Setup do
140
140
  expect { setup[:not_here] }.to raise_error(KeyError, /not_here/)
141
141
  end
142
142
  end
143
+
144
+ describe 'defining components when adapter was not registered' do
145
+ it 'raises error when trying to define a relation' do
146
+ expect {
147
+ Class.new(ROM::Relation[:not_here])
148
+ }.to raise_error(ROM::AdapterNotPresentError, /not_here/)
149
+ end
150
+
151
+ it 'raises error when trying to define a command' do
152
+ expect {
153
+ Class.new(ROM::Commands::Create[:not_here])
154
+ }.to raise_error(ROM::AdapterNotPresentError, /not_here/)
155
+ end
156
+ end
143
157
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rom
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.1
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Solnica
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-22 00:00:00.000000000 Z
11
+ date: 2015-06-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: transproc
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '0.2'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 0.2.2
22
+ version: 0.2.4
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: '0.2'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 0.2.2
32
+ version: 0.2.4
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: equalizer
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -65,47 +65,19 @@ dependencies:
65
65
  - !ruby/object:Gem::Version
66
66
  version: '10.3'
67
67
  - !ruby/object:Gem::Dependency
68
- name: rspec-core
68
+ name: rspec
69
69
  requirement: !ruby/object:Gem::Requirement
70
70
  requirements:
71
71
  - - "~>"
72
72
  - !ruby/object:Gem::Version
73
- version: '3.2'
73
+ version: '3.3'
74
74
  type: :development
75
75
  prerelease: false
76
76
  version_requirements: !ruby/object:Gem::Requirement
77
77
  requirements:
78
78
  - - "~>"
79
79
  - !ruby/object:Gem::Version
80
- version: '3.2'
81
- - !ruby/object:Gem::Dependency
82
- name: rspec-mocks
83
- requirement: !ruby/object:Gem::Requirement
84
- requirements:
85
- - - "~>"
86
- - !ruby/object:Gem::Version
87
- version: '3.2'
88
- type: :development
89
- prerelease: false
90
- version_requirements: !ruby/object:Gem::Requirement
91
- requirements:
92
- - - "~>"
93
- - !ruby/object:Gem::Version
94
- version: '3.2'
95
- - !ruby/object:Gem::Dependency
96
- name: rspec-expectations
97
- requirement: !ruby/object:Gem::Requirement
98
- requirements:
99
- - - "~>"
100
- - !ruby/object:Gem::Version
101
- version: '3.2'
102
- type: :development
103
- prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- requirements:
106
- - - "~>"
107
- - !ruby/object:Gem::Version
108
- version: '3.2'
80
+ version: '3.3'
109
81
  description: Persistence and mapping toolkit for Ruby
110
82
  email: piotr.solnica@gmail.com
111
83
  executables: []
@@ -116,9 +88,9 @@ files:
116
88
  - ".rspec"
117
89
  - ".rubocop.yml"
118
90
  - ".rubocop_todo.yml"
119
- - ".ruby-version"
120
91
  - ".travis.yml"
121
92
  - CHANGELOG.md
93
+ - CODE_OF_CONDUCT.md
122
94
  - CONTRIBUTING.md
123
95
  - Gemfile
124
96
  - Guardfile
@@ -133,17 +105,21 @@ files:
133
105
  - lib/rom/commands/composite.rb
134
106
  - lib/rom/commands/create.rb
135
107
  - lib/rom/commands/delete.rb
108
+ - lib/rom/commands/graph.rb
109
+ - lib/rom/commands/graph/class_interface.rb
110
+ - lib/rom/commands/lazy.rb
136
111
  - lib/rom/commands/result.rb
137
112
  - lib/rom/commands/update.rb
138
113
  - lib/rom/constants.rb
139
114
  - lib/rom/env.rb
115
+ - lib/rom/gateway.rb
140
116
  - lib/rom/global.rb
141
117
  - lib/rom/global/plugin_dsl.rb
142
118
  - lib/rom/header.rb
143
119
  - lib/rom/header/attribute.rb
144
120
  - lib/rom/lint/enumerable_dataset.rb
121
+ - lib/rom/lint/gateway.rb
145
122
  - lib/rom/lint/linter.rb
146
- - lib/rom/lint/repository.rb
147
123
  - lib/rom/lint/spec.rb
148
124
  - lib/rom/lint/test.rb
149
125
  - lib/rom/mapper.rb
@@ -154,8 +130,8 @@ files:
154
130
  - lib/rom/memory.rb
155
131
  - lib/rom/memory/commands.rb
156
132
  - lib/rom/memory/dataset.rb
133
+ - lib/rom/memory/gateway.rb
157
134
  - lib/rom/memory/relation.rb
158
- - lib/rom/memory/repository.rb
159
135
  - lib/rom/memory/storage.rb
160
136
  - lib/rom/model_builder.rb
161
137
  - lib/rom/pipeline.rb
@@ -198,19 +174,26 @@ files:
198
174
  - spec/integration/commands/create_spec.rb
199
175
  - spec/integration/commands/delete_spec.rb
200
176
  - spec/integration/commands/error_handling_spec.rb
177
+ - spec/integration/commands/graph_spec.rb
201
178
  - spec/integration/commands/update_spec.rb
202
179
  - spec/integration/mappers/combine_spec.rb
203
180
  - spec/integration/mappers/deep_embedded_spec.rb
204
181
  - spec/integration/mappers/definition_dsl_spec.rb
205
182
  - spec/integration/mappers/embedded_spec.rb
183
+ - spec/integration/mappers/exclude_spec.rb
206
184
  - spec/integration/mappers/fold_spec.rb
207
185
  - spec/integration/mappers/group_spec.rb
208
186
  - spec/integration/mappers/overwrite_attributes_value_spec.rb
187
+ - spec/integration/mappers/prefix_separator_spec.rb
188
+ - spec/integration/mappers/prefix_spec.rb
209
189
  - spec/integration/mappers/prefixing_attributes_spec.rb
210
190
  - spec/integration/mappers/registering_custom_mappers_spec.rb
211
191
  - spec/integration/mappers/renaming_attributes_spec.rb
212
192
  - spec/integration/mappers/reusing_mappers_spec.rb
193
+ - spec/integration/mappers/step_spec.rb
213
194
  - spec/integration/mappers/symbolizing_attributes_spec.rb
195
+ - spec/integration/mappers/unfold_spec.rb
196
+ - spec/integration/mappers/ungroup_spec.rb
214
197
  - spec/integration/mappers/unwrap_spec.rb
215
198
  - spec/integration/mappers/wrap_spec.rb
216
199
  - spec/integration/multi_repo_spec.rb
@@ -219,6 +202,7 @@ files:
219
202
  - spec/integration/repositories/extending_relations_spec.rb
220
203
  - spec/integration/repositories/setting_logger_spec.rb
221
204
  - spec/integration/setup_spec.rb
205
+ - spec/shared/command_behavior.rb
222
206
  - spec/shared/enumerable_dataset.rb
223
207
  - spec/shared/materializable.rb
224
208
  - spec/shared/one_behavior.rb
@@ -229,14 +213,20 @@ files:
229
213
  - spec/support/mutant.rb
230
214
  - spec/test/memory_repository_lint_test.rb
231
215
  - spec/unit/rom/command_registry_spec.rb
216
+ - spec/unit/rom/commands/graph_spec.rb
217
+ - spec/unit/rom/commands/lazy_spec.rb
232
218
  - spec/unit/rom/commands/result_spec.rb
233
219
  - spec/unit/rom/commands_spec.rb
234
220
  - spec/unit/rom/env_spec.rb
221
+ - spec/unit/rom/gateway_spec.rb
235
222
  - spec/unit/rom/global_spec.rb
236
223
  - spec/unit/rom/header_spec.rb
237
224
  - spec/unit/rom/mapper/dsl_spec.rb
238
225
  - spec/unit/rom/mapper_registry_spec.rb
239
226
  - spec/unit/rom/mapper_spec.rb
227
+ - spec/unit/rom/memory/commands/create_spec.rb
228
+ - spec/unit/rom/memory/commands/delete_spec.rb
229
+ - spec/unit/rom/memory/commands/update_spec.rb
240
230
  - spec/unit/rom/memory/dataset_spec.rb
241
231
  - spec/unit/rom/memory/relation_spec.rb
242
232
  - spec/unit/rom/memory/repository_spec.rb