rohbau 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6324e4ad3194b1f9b394c39f9d94c9cd321defd7
4
- data.tar.gz: e94b32beeec4bb254c9731911644d39d402d2bfc
3
+ metadata.gz: 589d8a1f649094a7a7f76534dcbda6495e41bc3f
4
+ data.tar.gz: 97ea6decb78ab17122f24afefda6f552ac2b114a
5
5
  SHA512:
6
- metadata.gz: e803f3c6e4c460e126acf857c90874cd040ea3a009e2c37dd9a10da2883538301425e4073e438ea4d2ff09c4ef3751788c20fa4c30e38a4abf4bdba0f3f7067e
7
- data.tar.gz: a26dc351af0515c20a34998f9b7bb95bc336d0fdb931e2ceaa637a3f7e33dc9634f5483108ff9c8b019254151f55a6fbf3756f041f46697210759f282739fe4a
6
+ metadata.gz: 106a58c5e4d7ece5c30f470917b86654eefb1c400326f5b45bd7ce2f5a12742af0e87a4e79d334673204427e87d711608e33d2bf015cd3e1d19c37aabd5e83eb
7
+ data.tar.gz: dfd94bdadbf507cdc1d1b5397a427b7bff23d3feed9face5b4b4963924705a9c260619b9b1847151786078344f780376163a686892f96725df9f727d18a71415
@@ -0,0 +1,12 @@
1
+ require 'bound'
2
+
3
+ module Rohbau
4
+ class Failure < Bound
5
+ def self.new_bound_class
6
+ Class.new(StaticBoundClass) do |cls|
7
+ cls.define_singleton_method(:success?) { false }
8
+ cls.define_singleton_method(:failure?) { true }
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ require 'bound'
2
+
3
+ module Rohbau
4
+ class Success < Bound
5
+ def self.new_bound_class
6
+ Class.new(StaticBoundClass) do |cls|
7
+ cls.define_singleton_method(:success?) { true }
8
+ cls.define_singleton_method(:failure?) { false }
9
+ end
10
+ end
11
+ end
12
+ end
@@ -1,3 +1,3 @@
1
1
  module Rohbau
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.1"
3
3
  end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+ require 'rohbau/failure'
3
+
4
+ describe Rohbau::Failure do
5
+ let(:subject) { Rohbau::Failure.new }
6
+
7
+ it 'inherits from Bound' do
8
+ assert_includes subject.ancestors, Bound::StaticBoundClass
9
+ end
10
+
11
+ it 'is a failure' do
12
+ assert_equal true, subject.failure?
13
+ end
14
+
15
+ it 'is no success' do
16
+ assert_equal false, subject.success?
17
+ end
18
+
19
+ it 'it does not polute Class' do
20
+ refute_includes Class.instance_methods, :failure?
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+ require 'rohbau/success'
3
+
4
+ describe Rohbau::Success do
5
+ let(:subject) { Rohbau::Success.new }
6
+
7
+ it 'inherits from Bound' do
8
+ assert_includes subject.ancestors, Bound::StaticBoundClass
9
+ end
10
+
11
+ it 'is a success' do
12
+ assert_equal true, subject.success?
13
+ end
14
+
15
+ it 'is no failure' do
16
+ assert_equal false, subject.failure?
17
+ end
18
+
19
+ it 'it does not polute Class' do
20
+ refute_includes Class.instance_methods, :success?
21
+ end
22
+ end
@@ -0,0 +1,106 @@
1
+ require 'spec_helper'
2
+ require 'rohbau/entity'
3
+
4
+ describe Rohbau::Entity do
5
+ describe 'class' do
6
+ let(:entity_class) { Rohbau::Entity }
7
+
8
+ it 'accepts list of attributes' do
9
+ entity_class.attributes(:city, :country)
10
+ end
11
+
12
+ it 'initializes' do
13
+ assert entity_class.new.is_a?(Rohbau::Entity)
14
+ end
15
+ end
16
+
17
+ describe 'instance' do
18
+ let(:entity) { Person.new }
19
+
20
+ it 'provides accessor' do
21
+ assert_equal nil, entity.name
22
+
23
+ entity.name = 'fasel'
24
+
25
+ assert_equal 'fasel', entity.name
26
+ end
27
+
28
+ describe 'predicate attribute' do
29
+ it 'should be false without value' do
30
+ assert_equal false, entity.name?
31
+ end
32
+
33
+ it 'should be false with false as value' do
34
+ entity.name = false
35
+
36
+ assert_equal false, entity.name?
37
+ end
38
+
39
+ it 'should be true with value' do
40
+ entity.name = 'fasel'
41
+
42
+ assert_equal true, entity.name?
43
+ end
44
+ end
45
+
46
+ describe 'equality' do
47
+ let(:person_1) { Person.new }
48
+ let(:person_2) { Person.new }
49
+ let(:dog) { Dog.new }
50
+ let(:cat) { Cat.new }
51
+
52
+ it 'is equal with identical entity class' do
53
+ [person_1, person_2].each do |entity|
54
+ entity.name = 'Johnny'
55
+ end
56
+
57
+ assert person_1 == person_2
58
+ end
59
+
60
+ it 'is equal with different entity classes' do
61
+ [person_1, dog].each do |entity|
62
+ entity.name = 'Johnny'
63
+ end
64
+
65
+ assert person_1 == dog
66
+ end
67
+
68
+ it 'is equal with additional attribute' do
69
+ [dog, cat].each do |entity|
70
+ entity.name = 'Johnny'
71
+ end
72
+
73
+ assert dog == cat
74
+ end
75
+
76
+ it 'is not equal with missing attribute' do
77
+ [dog, cat].each do |entity|
78
+ entity.name = 'Johnny'
79
+ end
80
+
81
+ refute cat == dog
82
+ end
83
+
84
+ it 'is not equal with different attributes' do
85
+ person_1.name = 'Johnny'
86
+ person_2.name = 'Brad'
87
+
88
+ refute person_1 == person_2
89
+ end
90
+ end
91
+ end
92
+
93
+ private
94
+
95
+ class Person < Rohbau::Entity
96
+ attributes :name, :name?
97
+ end
98
+
99
+ class Dog < Rohbau::Entity
100
+ attributes :name, :name?
101
+ end
102
+
103
+ class Cat < Rohbau::Entity
104
+ attributes :name, :name?, :color
105
+ end
106
+ end
@@ -1,17 +1,343 @@
1
1
  require 'spec_helper'
2
2
  require 'rohbau/index'
3
+ require 'rohbau/entity'
3
4
 
4
5
  describe Rohbau::Index do
5
6
  let(:index) { Rohbau::Index.new }
7
+ let(:entity) { Entity.new }
6
8
 
7
- describe 'initialize' do
8
- it 'has size 0' do
9
- assert_equal 0, index.size
9
+ describe 'default options' do
10
+ it 'enables uid_generation' do
11
+ assert index.option?(:uid_generation)
10
12
  end
11
13
 
12
- it 'does not contain any entities' do
13
- assert_equal [], index.all
14
- assert_equal [], index.each.to_a
14
+ it 'assigns DefaultMapper as mapper' do
15
+ assert index.option?(:mapper)
16
+ assert_equal Rohbau::Index::DefaultMapper, index.option(:mapper)
15
17
  end
18
+
19
+ it 'assigns DefaultMapper as unmapper' do
20
+ assert index.option?(:unmapper)
21
+ assert_equal Rohbau::Index::DefaultMapper, index.option(:unmapper)
22
+ end
23
+ end
24
+
25
+ describe 'setting options' do
26
+ it 'disables uid_generation' do
27
+ index.option(:uid_generation, false)
28
+
29
+ refute index.option?(:uid_generation)
30
+ end
31
+
32
+ it 'assigns OwnMapper as mapper' do
33
+ index.option(:mapper, OwnMapper)
34
+
35
+ assert_equal OwnMapper, index.option(:mapper)
36
+ end
37
+
38
+ it 'assigns OwnMapper as unmapper' do
39
+ index.option(:unmapper, OwnMapper)
40
+
41
+ assert_equal OwnMapper, index.option(:unmapper)
42
+ end
43
+ end
44
+
45
+ describe 'size' do
46
+ describe 'empty' do
47
+ it 'has size 0' do
48
+ assert_equal 0, index.size
49
+ end
50
+ end
51
+
52
+ describe 'with entities' do
53
+ before do
54
+ index.add(entity)
55
+ end
56
+
57
+ it 'has size 1' do
58
+ assert_equal 1, index.size
59
+ end
60
+ end
61
+ end
62
+
63
+ describe 'each' do
64
+ describe 'empty' do
65
+ it 'yields nothing' do
66
+ a = 0
67
+ index.each do
68
+ a += 1
69
+ end
70
+
71
+ assert_equal 0, a
72
+ end
73
+ end
74
+
75
+ describe 'with entities' do
76
+ before do
77
+ index.add(entity)
78
+ end
79
+
80
+ it 'yields block for every entity' do
81
+ a = 0
82
+ index.each do
83
+ a += 1
84
+ end
85
+
86
+ assert_equal 1, a
87
+ end
88
+ end
89
+ end
90
+
91
+ describe 'all' do
92
+ describe 'empty' do
93
+ it 'does not contain any entities' do
94
+ assert_equal [], index.all
95
+ end
96
+ end
97
+
98
+ describe 'with entities' do
99
+ it 'returns all entities' do
100
+ added_entity = index.add(entity)
101
+
102
+ assert_equal [added_entity], index.all
103
+ end
104
+ end
105
+ end
106
+
107
+ describe 'add' do
108
+ describe 'without uid' do
109
+ it 'generates a uid' do
110
+ refute entity.uid
111
+
112
+ added_entity = index.add(entity)
113
+
114
+ assert_equal '1', added_entity.uid
115
+ end
116
+
117
+ it 'is present in collection' do
118
+ added_entity = index.add(entity)
119
+
120
+ assert_equal added_entity, index.all[0]
121
+ end
122
+ end
123
+
124
+ describe 'with uid' do
125
+ it 'should fail' do
126
+ entity.uid = '1'
127
+
128
+ error = assert_raises(ArgumentError) do
129
+ index.add(entity)
130
+ end
131
+
132
+ assert_match Regexp.new('entity has uid'), error.message
133
+ end
134
+ end
135
+
136
+ describe 'without entity' do
137
+ it 'should fail' do
138
+ error = assert_raises(ArgumentError) do
139
+ index.add(nil)
140
+ end
141
+
142
+ assert_match Regexp.new('entity is invalid'), error.message
143
+ end
144
+ end
145
+
146
+ describe 'without uid_generation' do
147
+ let(:uid) { '1' }
148
+
149
+ before do
150
+ index.option(:uid_generation, false)
151
+ end
152
+
153
+ describe 'with uid' do
154
+ before do
155
+ entity.uid = uid
156
+ end
157
+
158
+ it 'keeps the uid' do
159
+ added_entity = index.add(entity)
160
+
161
+ assert_equal uid, added_entity.uid
162
+ end
163
+
164
+ it 'is present in collection' do
165
+ added_entity = index.add(entity)
166
+
167
+ assert_equal added_entity, index.all[0]
168
+ end
169
+ end
170
+
171
+ describe 'without uid' do
172
+ it 'should fail' do
173
+ error = assert_raises(ArgumentError) do
174
+ index.add(entity)
175
+ end
176
+
177
+ assert_match Regexp.new('entity has no uid'), error.message
178
+ end
179
+ end
180
+
181
+ describe 'with invalid uid' do
182
+ it 'should fail' do
183
+ ['', 1].each do |invalid_uid|
184
+ entity.uid = invalid_uid
185
+
186
+ error = assert_raises(ArgumentError) do
187
+ index.add(entity)
188
+ end
189
+
190
+ assert_match Regexp.new('uid is invalid'), error.message
191
+ end
192
+ end
193
+ end
194
+ end
195
+
196
+ describe 'bulk_add' do
197
+ let(:entities) { [entity, entity] }
198
+
199
+ it 'adds multiple entities' do
200
+ added_entities = index.bulk_add(entities)
201
+
202
+ assert_equal added_entities, index.all
203
+ end
204
+ end
205
+
206
+ describe 'get' do
207
+ let(:entities) { [entity, entity] }
208
+
209
+ it 'gets entity by uid' do
210
+ added_entity = index.add(entity)
211
+
212
+ assert_equal added_entity, index.get(added_entity.uid)
213
+ end
214
+
215
+ describe 'without uid' do
216
+ it 'should fail' do
217
+ error = assert_raises(ArgumentError) do
218
+ index.get(nil)
219
+ end
220
+
221
+ assert_match Regexp.new('uid is missing'), error.message
222
+ end
223
+ end
224
+
225
+ describe 'with invalid uid' do
226
+ it 'should fail' do
227
+ ['', 1].each do |invalid_uid|
228
+ entity.uid = invalid_uid
229
+
230
+ error = assert_raises(ArgumentError) do
231
+ index.get(entity.uid)
232
+ end
233
+
234
+ assert_match Regexp.new('uid is invalid'), error.message
235
+ end
236
+ end
237
+ end
238
+ end
239
+
240
+ describe 'update' do
241
+ it 'succeeds' do
242
+ added_entity = index.add(entity)
243
+
244
+ refute added_entity.name
245
+
246
+ added_entity.name = 'foo'
247
+ updated_entity = index.update(added_entity)
248
+
249
+ assert_equal 'foo', updated_entity.name
250
+ end
251
+
252
+ describe 'without uid' do
253
+ it 'should fail' do
254
+ error = assert_raises(ArgumentError) do
255
+ index.update(entity)
256
+ end
257
+
258
+ assert_match Regexp.new('entity has no uid'), error.message
259
+ end
260
+ end
261
+
262
+ describe 'without entity' do
263
+ it 'should fail' do
264
+ error = assert_raises(ArgumentError) do
265
+ index.update(nil)
266
+ end
267
+
268
+ assert_match Regexp.new('entity is invalid'), error.message
269
+ end
270
+ end
271
+
272
+ describe 'with unknown entity' do
273
+ it 'should fail' do
274
+ entity.uid = 'unknown'
275
+
276
+ error = assert_raises(ArgumentError) do
277
+ index.update(entity)
278
+ end
279
+
280
+ assert_match Regexp.new('entity is unknown'), error.message
281
+ end
282
+ end
283
+ end
284
+
285
+ describe 'delete' do
286
+ it 'removes entity' do
287
+ added_entity = index.add(entity)
288
+
289
+ assert index.get(added_entity.uid)
290
+ index.delete(added_entity.uid)
291
+
292
+ refute index.get(added_entity.uid)
293
+ end
294
+
295
+ describe 'with unknown uid' do
296
+ it 'should fail' do
297
+ uid = 'unknown'
298
+
299
+ error = assert_raises(ArgumentError) do
300
+ index.delete(uid)
301
+ end
302
+
303
+ assert_match Regexp.new('uid is unknown'), error.message
304
+ end
305
+ end
306
+ end
307
+
308
+ describe 'bulk_delete' do
309
+ let(:entities) { [entity, entity] }
310
+
311
+ it 'removes multiple entities' do
312
+ added_entities = index.bulk_add(entities)
313
+
314
+ assert_equal added_entities, index.all
315
+
316
+ index.bulk_delete(added_entities.map(&:uid))
317
+
318
+ assert_equal [], index.all
319
+ end
320
+ end
321
+
322
+ describe 'has_uid?' do
323
+ it 'fails with unknown uid' do
324
+ refute index.has_uid?('unknown')
325
+ end
326
+
327
+ it 'succeeds with known uid' do
328
+ added_entity = index.add(entity)
329
+
330
+ assert index.has_uid?(added_entity.uid)
331
+ end
332
+ end
333
+ end
334
+
335
+ private
336
+
337
+ class Entity < Rohbau::Entity
338
+ attributes :uid, :name
339
+ end
340
+
341
+ class OwnMapper
16
342
  end
17
343
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rohbau
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jakob Holderbaum
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2016-04-30 00:00:00.000000000 Z
15
+ date: 2016-06-17 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: thread_safe
@@ -141,6 +141,7 @@ files:
141
141
  - lib/rohbau/default_memory_gateway.rb
142
142
  - lib/rohbau/entity.rb
143
143
  - lib/rohbau/event_tube.rb
144
+ - lib/rohbau/failure.rb
144
145
  - lib/rohbau/index.rb
145
146
  - lib/rohbau/interface.rb
146
147
  - lib/rohbau/it_behaves_like.rb
@@ -153,7 +154,7 @@ files:
153
154
  - lib/rohbau/runtime_loader.rb
154
155
  - lib/rohbau/service_factory.rb
155
156
  - lib/rohbau/shared_spec.rb
156
- - lib/rohbau/shared_specs/default_gateway.rb
157
+ - lib/rohbau/success.rb
157
158
  - lib/rohbau/use_case.rb
158
159
  - lib/rohbau/version.rb
159
160
  - rakelib/build_readme.rake
@@ -162,11 +163,14 @@ files:
162
163
  - rakelib/rubocop.rake
163
164
  - rohbau.gemspec
164
165
  - spec/event_tube_spec.rb
166
+ - spec/failure_spec.rb
165
167
  - spec/interface_spec.rb
166
168
  - spec/runtime_loader_spec.rb
167
169
  - spec/service_factory_spec.rb
168
170
  - spec/shared_spec_spec.rb
169
171
  - spec/spec_helper.rb
172
+ - spec/success_spec.rb
173
+ - spec/unit/rohbau/entity_spec.rb
170
174
  - spec/unit/rohbau/index_spec.rb
171
175
  homepage: http://www.neopoly.de/
172
176
  licenses:
@@ -194,9 +198,12 @@ specification_version: 4
194
198
  summary: Provides a set of patterns used in Domain Driven Design
195
199
  test_files:
196
200
  - spec/event_tube_spec.rb
201
+ - spec/failure_spec.rb
197
202
  - spec/interface_spec.rb
198
203
  - spec/runtime_loader_spec.rb
199
204
  - spec/service_factory_spec.rb
200
205
  - spec/shared_spec_spec.rb
201
206
  - spec/spec_helper.rb
207
+ - spec/success_spec.rb
208
+ - spec/unit/rohbau/entity_spec.rb
202
209
  - spec/unit/rohbau/index_spec.rb
@@ -1,301 +0,0 @@
1
- module Rohbau
2
- module SharedSpecs
3
- DefaultGateway = Proc.new do
4
- describe 'add' do
5
- it 'inserts an entity' do
6
- subject.add entity
7
- assert_equal 1, subject.size
8
- end
9
-
10
- it 'returns a copied entity' do
11
- new_entity = subject.add entity
12
- refute_equal new_entity.object_id, entity.object_id
13
- end
14
-
15
- it 'assigns a string uid to the entity' do
16
- new_entity = subject.add entity
17
- refute_nil new_entity.uid
18
- assert_kind_of String, new_entity.uid
19
- end
20
-
21
- it 'raises an error if entity is nil' do
22
- assert_raises ArgumentError do
23
- subject.add nil
24
- end
25
- end
26
-
27
- it 'raises an error if entity has already an uid' do
28
- entity.uid = '45'
29
- assert_raises ArgumentError do
30
- subject.add entity
31
- end
32
- end
33
- end
34
-
35
- describe 'bulk_add' do
36
- it 'inserts a collection of entities' do
37
- entities = [entity, updated_entity]
38
-
39
- subject.bulk_add entities
40
- assert_equal 2, subject.size
41
- end
42
-
43
- it 'returns a collection copied entities' do
44
- entities = [entity]
45
-
46
- new_entities = subject.bulk_add entities
47
- refute_equal new_entities[0].object_id, entities[0].object_id
48
- end
49
-
50
- it 'assigns a string uid to the entities' do
51
- entities = [entity]
52
-
53
- new_entities = subject.bulk_add entities
54
- refute_nil new_entities[0].uid
55
- assert_kind_of String, new_entities[0].uid
56
- end
57
-
58
- it 'raises an error if entities are nil' do
59
- assert_raises ArgumentError do
60
- subject.bulk_add [nil]
61
- end
62
- end
63
-
64
- it 'raises an error if entity has already an uid' do
65
- entity.uid = '45'
66
- assert_raises ArgumentError do
67
- subject.bulk_add [entity]
68
- end
69
- end
70
- end
71
-
72
- describe 'all' do
73
- it 'returns an empty array' do
74
- assert_equal [], subject.all
75
- end
76
-
77
- it 'returns added entities' do
78
- entities = [entity, updated_entity].map do |e|
79
- subject.add e
80
- end
81
-
82
- assert_equal entities, subject.all
83
- end
84
- end
85
-
86
- describe 'get' do
87
- it 'returns nothing if uid not found' do
88
- assert_equal nil, subject.get('23')
89
- end
90
-
91
- it 'raises an error if uid is an invalid value' do
92
- ["", nil, 22].each do |value|
93
- assert_raises ArgumentError do
94
- subject.get(value)
95
- end
96
- end
97
- end
98
-
99
- it 'returns the entity for a known uid' do
100
- entities = [entity, updated_entity].map do |e|
101
- subject.add e
102
- end
103
-
104
- assert_equal entities.first, subject.get(entities.first.uid)
105
- assert_equal entities.last, subject.get(entities.last.uid)
106
- end
107
- end
108
-
109
- describe 'entity duplication' do
110
- it 'returns a copy of the stored entity on get' do
111
- uid = subject.add(entity).uid
112
-
113
- e = subject.get(uid)
114
- e.uid = uid + '1'
115
-
116
- assert_equal uid, subject.get(uid).uid
117
- end
118
-
119
- it 'returns a copy of the stored entity on add' do
120
- result = subject.add(entity)
121
- uid = result.uid
122
-
123
- result.uid = uid + '1'
124
-
125
- assert_equal uid, subject.get(uid).uid
126
- end
127
-
128
- it 'adds a copy as stored entity on add' do
129
- uid = subject.add(entity).uid
130
-
131
- entity.uid = uid + '1'
132
-
133
- assert_equal uid, subject.get(uid).uid
134
- end
135
-
136
- it 'returns copies of the stored entities on all' do
137
- uid = subject.add(entity).uid
138
-
139
- e = subject.all.first
140
- e.uid = uid + '1'
141
-
142
- assert_equal uid, subject.get(uid).uid
143
- end
144
-
145
- it 'returns a copy of the stored entity on update' do
146
- stored = subject.add(entity)
147
- uid = stored.uid
148
-
149
- result = subject.update(stored)
150
-
151
- result.uid = uid + '1'
152
-
153
- assert_equal uid, subject.get(uid).uid
154
- end
155
-
156
- it 'returns copies of the stored entities on bulk_add' do
157
- entities = [entity]
158
-
159
- results = subject.bulk_add(entities)
160
- uid = results[0].uid
161
-
162
- results[0].uid = uid + '1'
163
-
164
- assert_equal uid, subject.get(uid).uid
165
- end
166
-
167
- it 'adds copies as stored entities on bulk_add' do
168
- entities = [entity]
169
-
170
- results = subject.bulk_add(entities)
171
- uid = results[0].uid
172
-
173
- entity.uid = uid + '1'
174
-
175
- assert_equal uid, subject.get(uid).uid
176
- end
177
- end
178
-
179
- describe 'update' do
180
- it 'fails if nil is given' do
181
- assert_raises ArgumentError do
182
- subject.update(nil)
183
- end
184
- end
185
-
186
- it 'fails if uid is nil' do
187
- assert_raises ArgumentError do
188
- entity.uid = nil
189
- subject.update(entity)
190
- end
191
- end
192
-
193
- it 'fails if uid is not known' do
194
- assert_raises ArgumentError do
195
- entity.uid = "22"
196
- subject.update(entity)
197
- end
198
- end
199
-
200
- it 'updates and returns the entity' do
201
- added_entity = subject.add(entity)
202
- uid = added_entity.uid
203
-
204
- updated_entity.uid = uid
205
- result = subject.update(updated_entity)
206
-
207
- assert_equal subject.get(uid), result
208
- refute_equal added_entity, result
209
- end
210
- end
211
-
212
- describe 'delete' do
213
- it 'fails if nil is given' do
214
- assert_raises ArgumentError do
215
- subject.delete(nil)
216
- end
217
- end
218
-
219
- it 'fails if uid is not known' do
220
- assert_raises ArgumentError do
221
- subject.delete('22')
222
- end
223
- end
224
-
225
- it 'deletes the entity' do
226
- uid = subject.add(entity).uid
227
-
228
- assert subject.get(uid)
229
-
230
- subject.delete(uid)
231
-
232
- refute subject.get(uid)
233
- end
234
-
235
- it 'returns deleted entity' do
236
- uid = subject.add(entity).uid
237
-
238
- persisted_entity = subject.get(uid)
239
-
240
- assert_equal persisted_entity, subject.delete(uid)
241
- end
242
-
243
- it 'removes the entity from the collection' do
244
- uid = subject.add(entity).uid
245
- subject.add(updated_entity)
246
-
247
- subject.delete(uid)
248
-
249
- assert_equal 1, subject.all.size
250
- refute_includes subject.all.map(&:uid), uid
251
- end
252
- end
253
-
254
- describe 'bulk_delete' do
255
- it 'raises an error if nil is given' do
256
- assert_raises ArgumentError do
257
- subject.bulk_delete([nil])
258
- end
259
- end
260
-
261
- it 'raises an error if uid is not known' do
262
- assert_raises ArgumentError do
263
- subject.bulk_delete(['22'])
264
- end
265
- end
266
-
267
- it 'deletes the entities' do
268
- uid = subject.add(entity).uid
269
- uids = [uid]
270
-
271
- assert subject.get(uid)
272
-
273
- subject.bulk_delete(uids)
274
-
275
- refute subject.get(uid)
276
- end
277
-
278
- it 'returns deleted entity' do
279
- uid = subject.add(entity).uid
280
- uids = [uid]
281
-
282
- persisted_entity = subject.get(uid)
283
-
284
- assert_equal persisted_entity, subject.bulk_delete(uids)[0]
285
- end
286
-
287
- it 'removes the entity from the collection' do
288
- uid = subject.add(entity).uid
289
- uids = [uid]
290
-
291
- subject.add(updated_entity).uid
292
-
293
- subject.bulk_delete(uids)
294
-
295
- assert_equal 1, subject.all.size
296
- refute_includes subject.all.map(&:uid), uid
297
- end
298
- end
299
- end
300
- end
301
- end