model_pack 0.9.5 → 0.9.6

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