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 +4 -4
- data/lib/model_pack/class_methods.rb +2 -1
- data/lib/model_pack/constructor.rb +1 -2
- data/lib/model_pack/version.rb +1 -1
- data/spec/model_pack_spec.rb +63 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b24e44909763b19456f9080d94fb8a74cde3db9a
|
4
|
+
data.tar.gz: ade097d0da0686cd4397dfb590185dfa1818a69d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
|
data/lib/model_pack/version.rb
CHANGED
data/spec/model_pack_spec.rb
CHANGED
@@ -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.
|
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:
|
11
|
+
date: 2015-04-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|