model_pack 0.9.5 → 0.9.6

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
  SHA1:
3
- metadata.gz: 131e0a1ec4f533e5168483aed5e35a2348cc2c15
4
- data.tar.gz: 88a8b389ea07978a35a751fd17698bfeddacff2e
3
+ metadata.gz: b24e44909763b19456f9080d94fb8a74cde3db9a
4
+ data.tar.gz: ade097d0da0686cd4397dfb590185dfa1818a69d
5
5
  SHA512:
6
- metadata.gz: a5342b2b109ebc0e2ce5c898d3405e0c1463ef4b53071a1d3995f20662e0ffaf61f28146f4c983af1d30ce201bbcd4ccbb13999b717449e14cbadee403ce149a
7
- data.tar.gz: 0664cc441a4f835e59d17b426ab3e43343abf21ac8a6a00a48e7b3c71349bd7f1906073d4149273cbe5f9231bf7600337d1bb4e6f3e29cf8aa29ceab16c6a720
6
+ metadata.gz: 5e99105f1c05100f09690bd3a8d64fa9574557a701515e1cd9e6c10647c56f9d6c04e57ab725abb6c625d0c5018fa498e218c81a01326918f116e2d81f282ea4
7
+ data.tar.gz: 986d5e52d67e732e4c4d8d96bbe6ab55e805dcb8d97fa6366e6e5a26e2ff5d35ec226ee553b399e2e0f408dc17e617097a8b491ce05156da8e4a2da2b20856c7
@@ -34,10 +34,11 @@ module ModelPack
34
34
  end if serialize
35
35
  end
36
36
 
37
- def object(name, class_name: nil, default: nil, serialize: nil)
37
+ def object(name, class_name: nil, default: nil, serialize: nil, predicate: nil)
38
38
  attribute(name,
39
39
  default: default,
40
40
  serialize: serialize,
41
+ predicate: predicate,
41
42
  writer: lambda { |v| v.is_a?(Hash) && class_name ? class_name.new(v) : v })
42
43
  end
43
44
 
@@ -1,8 +1,7 @@
1
1
  module ModelPack
2
2
  module Constructor
3
3
  def initialize(*a)
4
- attributes = a.pop
5
- update_attributes(attributes) if attributes
4
+ update_attributes(a.pop) if a.last.is_a?(Hash)
6
5
  super(*a)
7
6
  end
8
7
  end
@@ -1,3 +1,3 @@
1
1
  module ModelPack
2
- VERSION = "0.9.5"
2
+ VERSION = "0.9.6"
3
3
  end
@@ -237,6 +237,26 @@ describe ModelPack::ClassMethods do
237
237
  expect(owp.load?).to eq('NO')
238
238
  end
239
239
 
240
+ it "should have predicate for nested object" do
241
+ class TargetObject
242
+ end
243
+
244
+ class ObjectWithPredicateObject
245
+ include ModelPack::Document
246
+
247
+ object :target, class_name: TargetObject, predicate: true
248
+ end
249
+
250
+ object1 = ObjectWithPredicateObject.new(
251
+ target: TargetObject.new
252
+ )
253
+
254
+ object2 = ObjectWithPredicateObject.new()
255
+
256
+ expect(object1.target?).to be true
257
+ expect(object2.target?).to be false
258
+ end
259
+
240
260
  it "should boolean type works well" do
241
261
  class BooleanData
242
262
  include ModelPack::Document
@@ -268,4 +288,47 @@ describe ModelPack::ClassMethods do
268
288
  expect(array1.data.size).to be 1
269
289
  expect(array2.data.size).to be 0
270
290
  end
291
+
292
+ it "should have default nested object" do
293
+ class ObjectDefaults
294
+ include ModelPack::Document
295
+
296
+ attribute :alpha, default: [1,2,3]
297
+ attribute :beta, default: {a: true}
298
+ end
299
+
300
+ class ObjectWithDefaults
301
+ include ModelPack::Document
302
+
303
+ object :defaults, class_name: ObjectDefaults, default: ObjectDefaults
304
+ end
305
+
306
+ object = ObjectWithDefaults.new
307
+
308
+ expect(object.defaults).to be_a(ObjectDefaults)
309
+ expect(object.defaults.alpha).to contain_exactly(1,2,3)
310
+ expect(object.defaults.beta).to include(a: true)
311
+ end
312
+
313
+ it "should have constructor with custom params" do
314
+ class ObjectWithCustomConstructor
315
+ include ModelPack::Document
316
+
317
+ attribute :required
318
+
319
+ attr_accessor :req
320
+
321
+ def initialize(req)
322
+ @req = req
323
+ end
324
+ end
325
+
326
+ object1 = ObjectWithCustomConstructor.new('GET', required: false)
327
+ object2 = ObjectWithCustomConstructor.new('POST')
328
+
329
+ expect(object1.req).to eq 'GET'
330
+ expect(object1.required).to be false
331
+ expect(object2.req).to eq 'POST'
332
+ expect(object2.required).to be nil
333
+ end
271
334
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: model_pack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.5
4
+ version: 0.9.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - che
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-05 00:00:00.000000000 Z
11
+ date: 2015-04-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler