smart_properties 1.16.1 → 1.16.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 044a13ef450738b8342644983451e7659ba6e33116801be84206fa9197e42c94
4
- data.tar.gz: 709f79b9de54975dc92c8b47bb68db67b81c14f20f60d21358098060b34629db
3
+ metadata.gz: 3d970dbdc63b4c78e01ec7f569bd00d9c37a61c672f97d084a5a01b205c80159
4
+ data.tar.gz: 0db3dca56f41fafc8c96cef4c2ebd54068ce505101a3f949549724522b88bf3f
5
5
  SHA512:
6
- metadata.gz: 0a9d6e5383e26cc9143553fe54c5f030be3d40d1927b4613f0f87c751fb3fdf3741afb0aeaaf22336a229070f3e05a1bbe25751736b50e7f8cf3d4d1c8b74909
7
- data.tar.gz: bf90c5eec8fa7059a044f14b810583492d3775f254c3a59c0cf1985b0a2343fa2830777a0c6e28b91b2e7eed5ca528189862f6effa8724d094775168cf17d0a8
6
+ metadata.gz: 186ffbca4f484bd2dcf39fef28bf49523323d195c515567266dfe1c1166b513a426b8da3548a350025d11ca4188984ad312302198ec8d365de00d120b93921a5
7
+ data.tar.gz: dffb5d926bc985cf751d654782d152acb38ef1a9b1febd9ccec9bb2589fb61e55b6f471d83d82f106d2f504b1276c2f00166ff18b2f3ea48fc550687d60cf5de
@@ -13,7 +13,7 @@ module SmartProperties
13
13
 
14
14
  collection = new
15
15
 
16
- parents.each do |parent|
16
+ parents.reverse.each do |parent|
17
17
  parent.properties.register(collection)
18
18
  end
19
19
 
@@ -1,3 +1,3 @@
1
1
  module SmartProperties
2
- VERSION = "1.16.1"
2
+ VERSION = "1.16.2"
3
3
  end
@@ -226,43 +226,67 @@ RSpec.describe SmartProperties, 'intheritance' do
226
226
  end
227
227
  end
228
228
 
229
- it "supports multiple inheritance through modules" do
230
- m = Module.new do
231
- include SmartProperties
232
- property :m, default: 1
229
+ context "through modules" do
230
+ let(:m) do
231
+ m = Module.new do
232
+ include SmartProperties
233
+ property :m, default: 1
234
+ end
233
235
  end
234
236
 
235
- n = Module.new do
236
- include SmartProperties
237
- property :n, default: 2
237
+ let(:n) do
238
+ n = Module.new do
239
+ include SmartProperties
240
+ property :n, default: 2
241
+ end
238
242
  end
239
243
 
240
- o = Module.new {}
244
+ it "is supported" do
245
+ n = self.n
246
+ m = self.m
247
+ o = Module.new {}
241
248
 
242
- klass = Class.new do
243
- include m
244
- include o
245
- include n
246
- end
249
+ klass = Class.new do
250
+ include m
251
+ include o
252
+ include n
253
+ end
254
+
255
+ n.module_eval do
256
+ property :p, default: 3
257
+ end
258
+
259
+ instance = klass.new
247
260
 
248
- n.module_eval do
249
- property :p, default: 3
261
+ expect(instance.m).to eq(1)
262
+ expect(instance.n).to eq(2)
263
+ expect(instance.p).to eq(3)
264
+
265
+ expect { klass.new(m: 4, n: 5, p: 6) }.to_not raise_error
250
266
  end
251
267
 
252
- instance = klass.new
268
+ it "yields properly ordered properties – child properties have higher precedence than parent properties" do
269
+ n = self.n
270
+ m = self.m
271
+
272
+ parent = Class.new do
273
+ include m
274
+ include n
275
+ end
276
+ expect(parent.new.m).to eq(1)
253
277
 
254
- expect(instance.m).to eq(1)
255
- expect(instance.n).to eq(2)
256
- expect(instance.p).to eq(3)
278
+ child = Class.new(parent) do
279
+ property :m, default: 0
280
+ end
281
+ expect(child.new.m).to eq(0)
257
282
 
258
- expect { klass.new(m: 4, n: 5, p: 6) }.to_not raise_error
283
+ grandchild = Class.new(child)
284
+ expect(grandchild.new.m).to eq(0)
259
285
 
260
- klass2 = Class.new do
261
- include n
262
- include m
286
+ grandgrandchild = Class.new(grandchild) do
287
+ property :m, default: 1000
288
+ end
289
+ expect(grandgrandchild.new.m).to eq(1000)
263
290
  end
264
-
265
- expect { klass.new(m: 4, n: 5, p: 6) }.to_not raise_error
266
- expect { klass2.new(m: 4, n: 5, p: 6) }.to_not raise_error
267
291
  end
268
292
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smart_properties
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.16.1
4
+ version: 1.16.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Konstantin Tennhard