smart_properties 1.16.1 → 1.16.2

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
  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