model_pack 0.9.10 → 0.9.11

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: 4cfeef0bbf2f502e3fbf434242a0b60201777a28
4
- data.tar.gz: 1d7a66e4339cdf3abeb7acb200af352c24d56995
3
+ metadata.gz: 9a7f884f06e518d29fc6644b38ad37813b3c15e3
4
+ data.tar.gz: c845a60e80628ad55ef0a2e8775a366808238f61
5
5
  SHA512:
6
- metadata.gz: 427e3427adb70a27846e513e784719a34381a83b1d0c7688475e1db5ddd75b68ddc4fe135bc30fdb2aee303724c105bb502d8f0d27e5d752916a1c121a12eaf0
7
- data.tar.gz: 83c85f6789d7a05e3c83826110fe9fcb999ed1832a5fe83022898f4eec4e6818f403d58ac5ca9e03b0e55b8ecd4342af3b7d8379e4c471a8db24ab699f21c599
6
+ metadata.gz: 6c897776daee8e42b74e9b2264702fc58d843e166f4fdd344bafb52bc511c96ecf71d793b51b15b77a23cd1e0f9a2825ab9ae88930c8eab53392f1497e7d9b27
7
+ data.tar.gz: fdaeb38967e99dd6849d6acefbb776a5e506072f3ffbfd7677767c4f49c78d52b2ecf58fc7dcb4984257ee82e2d87b694de6a0f27d279e7de0b58d83fb9ccbf7
@@ -11,7 +11,9 @@ module ModelPack
11
11
  end
12
12
 
13
13
  def attribute_names
14
- class_variable_defined?(:@@attribute_names) ? class_variable_get(:@@attribute_names) : class_variable_set(:@@attribute_names, Array.new)
14
+ names = instance_variable_defined?(:@attribute_names) ?
15
+ instance_variable_get(:@attribute_names) :
16
+ instance_variable_set(:@attribute_names, superclass.respond_to?(:attribute_names) ? superclass.attribute_names.clone : Array.new)
15
17
  end
16
18
  end
17
19
 
@@ -1,3 +1,3 @@
1
1
  module ModelPack
2
- VERSION = "0.9.10"
2
+ VERSION = "0.9.11"
3
3
  end
@@ -2,7 +2,7 @@ require "spec_helper"
2
2
 
3
3
  describe ModelPack::ClassMethods do
4
4
 
5
- it "should create model with default fields" do
5
+ it "should create model with defaults" do
6
6
  class Point
7
7
  include ModelPack::Document
8
8
 
@@ -16,14 +16,14 @@ describe ModelPack::ClassMethods do
16
16
  expect(point.attributes).to include({x: 0, y: 0})
17
17
  end
18
18
 
19
- it "should create model and fill it thought initialization" do
19
+ it "should create filled model" do
20
20
  point = Point.new(x: 3, y: 5)
21
21
  expect(point.x).to be(3)
22
22
  expect(point.y).to be(5)
23
23
  expect(point.attributes).to include({x: 3, y: 5})
24
24
  end
25
25
 
26
- it "should update_attributes change values" do
26
+ it "should change attributes" do
27
27
  point = Point.new(x: 4, y: 6)
28
28
  point.update_attributes(x:3, y:2)
29
29
  expect(point.x).to be(3)
@@ -89,7 +89,7 @@ describe ModelPack::ClassMethods do
89
89
  expect(json[:points][2]).to include({x: 5, y:5})
90
90
  end
91
91
 
92
- it "should each attribute use writer" do
92
+ it "should use each attribute like writer" do
93
93
  class SecureData
94
94
  include ModelPack::Document
95
95
 
@@ -121,7 +121,7 @@ describe ModelPack::ClassMethods do
121
121
  expect(unsecure_hash).to include(always_string: "55")
122
122
  end
123
123
 
124
- it "should argument error method with name *method* already exists" do
124
+ it "should not allow method with name `method`" do
125
125
  expect {
126
126
  class Request
127
127
  include ModelPack::Document
@@ -131,7 +131,7 @@ describe ModelPack::ClassMethods do
131
131
  }.to raise_error
132
132
  end
133
133
 
134
- it "should serialize and load back model" do
134
+ it "should serialize and upload model" do
135
135
  polygon = Polygon.new(points: [{x: 3, y: 3}, {x:2, y:1}, {x:4, y:2}])
136
136
  polygon_copy = Polygon.new(polygon.serializable_hash) # or as_json
137
137
  expect(polygon_copy.points).to be_a(Array)
@@ -140,7 +140,7 @@ describe ModelPack::ClassMethods do
140
140
  end
141
141
  end
142
142
 
143
- it "should create copy of model" do
143
+ it "should copy model" do
144
144
  polygon = Polygon.new(points: [{x: 3, y: 3}, {x:2, y:1}, {x:4, y:2}])
145
145
  polygon_copy = polygon.copy
146
146
  polygon.points.each_with_index do |point, index|
@@ -148,7 +148,7 @@ describe ModelPack::ClassMethods do
148
148
  end
149
149
  end
150
150
 
151
- it "should model have nary field" do
151
+ it "should have nary field" do
152
152
  class Options
153
153
  include ModelPack::Document
154
154
 
@@ -209,7 +209,7 @@ describe ModelPack::ClassMethods do
209
209
  expect(buffer.position).to be(11)
210
210
  end
211
211
 
212
- it "should have peredicate method" do
212
+ it "should have predicate method" do
213
213
  class OptionsWithPredicate
214
214
  include ModelPack::Document
215
215
 
@@ -237,7 +237,7 @@ describe ModelPack::ClassMethods do
237
237
  expect(owp.load?).to eq('NO')
238
238
  end
239
239
 
240
- it "should boolean type works well" do
240
+ it "should boolean type to work too" do
241
241
  class BooleanData
242
242
  include ModelPack::Document
243
243
 
@@ -255,7 +255,7 @@ describe ModelPack::ClassMethods do
255
255
  expect(copy_false_data.serializable_hash[:bit]).to be false
256
256
  end
257
257
 
258
- it "should create unique array for each instance" do
258
+ it "should create unique array for each of instance" do
259
259
  class ArrayData
260
260
  include ModelPack::Document
261
261
 
@@ -263,13 +263,13 @@ describe ModelPack::ClassMethods do
263
263
  end
264
264
 
265
265
  array1 = ArrayData.new
266
- array1.data << 1
266
+ array1.data § 1
267
267
  array2 = ArrayData.new
268
268
  expect(array1.data.size).to be 1
269
269
  expect(array2.data.size).to be 0
270
270
  end
271
271
 
272
- it "supports boolean as default" do
272
+ it "supports boolean as default values" do
273
273
  class BooleanData
274
274
  include ModelPack::Document
275
275
 
@@ -285,7 +285,7 @@ describe ModelPack::ClassMethods do
285
285
  expect(data.dynamic_default).to be 6
286
286
  end
287
287
 
288
- it "as class in model" do
288
+ it "has a class in the model" do
289
289
  class NestedObject
290
290
  include ModelPack::Document
291
291
  attribute :a, default: 5
@@ -294,9 +294,31 @@ describe ModelPack::ClassMethods do
294
294
  class ParentObject
295
295
  include ModelPack::Document
296
296
  object :nested, class_name: NestedObject, as: NestedObject
297
+ attribute :b, default: 1
297
298
  end
298
299
 
299
300
  parent = ParentObject.new
300
301
  expect(parent.nested.a).to be 5
301
302
  end
303
+
304
+ it "inherits another document" do
305
+ class BaseDocument
306
+ include ModelPack::Document
307
+ attribute :param, default: 'val'
308
+ end
309
+
310
+ class CustomDocument < BaseDocument
311
+ include ModelPack::Document
312
+ attribute :first, default: 'foo'
313
+ end
314
+
315
+ class AnotherDocument < BaseDocument
316
+ include ModelPack::Document
317
+ attribute :second, default: 'bar'
318
+ end
319
+
320
+ expect(BaseDocument.new.attributes).to eq(param: 'val');
321
+ expect(CustomDocument.new.attributes).to eq(param: 'val', first: 'foo');
322
+ expect(AnotherDocument.new.attributes).to eq(param: 'val', second: 'bar');
323
+ end
302
324
  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.10
4
+ version: 0.9.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - inre
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-12 00:00:00.000000000 Z
11
+ date: 2016-04-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -96,10 +96,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
96
96
  version: 2.3.0
97
97
  requirements: []
98
98
  rubyforge_project:
99
- rubygems_version: 2.4.6
99
+ rubygems_version: 2.5.1
100
100
  signing_key:
101
101
  specification_version: 4
102
102
  summary: Model Pack – simple models
103
103
  test_files:
104
104
  - spec/model_pack_spec.rb
105
105
  - spec/spec_helper.rb
106
+ has_rdoc: