simple_params 1.5.1 → 1.5.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/Gemfile.lock +1 -1
- data/lib/simple_params/concerns/rails_helpers.rb +1 -0
- data/lib/simple_params/params.rb +3 -3
- data/lib/simple_params/version.rb +1 -1
- data/spec/acceptance_spec.rb +66 -31
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NDE2OTkyZTFiMjYzYTQ1NmVlNzI4OWUyNzM3MGMyZjEyNzRjOGUyNg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NTMxMGU3ZWE5NTY4ZmI2OGMyZDk0ZjZiOTIxNGJmMmI0NjgxNjRhMw==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
OTJmMzRhNTFlOWI0YjAwZjU1N2E1NDhjYTkzZWJjZTczMWMxODQyOWRkNmYw
|
10
|
+
NjRhZjU2OTNlNDI4MzAwZGM0ZTJiMTNhMWEyMDEzODE0MzBkZWMxZmE0YTA0
|
11
|
+
ZjI0MmJhNGY1MWZkZGE2NTQwMDZkMWZkNGQyNGE1NzE3YTdhZTY=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZGZkZmI0NmI4NzY3MWJhYWQwNjRiZDk1NDBkOWNjNDk2ODc3OTFmYzQwYzIz
|
14
|
+
N2JmNDk5MTZkYzZiNDE5MjI2ZDJhYTc5ZTFlODk3MmJjMjllZTA5NzBmNDYy
|
15
|
+
NzY2NTJhNWMzZTc5N2FlMzRiM2YxMWRlNjUwZjkxM2U0OTJjOTk=
|
data/Gemfile.lock
CHANGED
data/lib/simple_params/params.rb
CHANGED
@@ -75,12 +75,12 @@ module SimpleParams
|
|
75
75
|
else
|
76
76
|
# This logic basically sets the nested class to an instance of itself, unless
|
77
77
|
# it is optional.
|
78
|
-
|
79
|
-
nil
|
78
|
+
init_value = if opts[:optional]
|
79
|
+
klass.hash? ? nil : []
|
80
80
|
else
|
81
81
|
klass_instance = klass.new({}, self, name)
|
82
|
+
klass.hash? ? klass_instance : [klass_instance]
|
82
83
|
end
|
83
|
-
init_value = klass.hash? ? init : [init]
|
84
84
|
instance_variable_set("@#{name}", init_value)
|
85
85
|
end
|
86
86
|
end
|
data/spec/acceptance_spec.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
class AcceptanceParams < SimpleParams::Params
|
4
|
+
with_rails_helpers
|
4
5
|
allow_undefined_params
|
5
6
|
param :reference, type: :object, optional: true
|
6
7
|
param :name
|
@@ -24,18 +25,15 @@ class AcceptanceParams < SimpleParams::Params
|
|
24
25
|
end
|
25
26
|
|
26
27
|
nested_array :dogs do
|
27
|
-
with_rails_helpers
|
28
28
|
param :name
|
29
29
|
param :age, type: :integer, validations: { inclusion: { in: 1..20 } }
|
30
30
|
end
|
31
31
|
|
32
32
|
nested_array :cats, with_ids: true do
|
33
|
-
with_rails_helpers
|
34
33
|
param :name
|
35
34
|
end
|
36
35
|
|
37
36
|
nested_array :birds, optional: true, with_ids: true do
|
38
|
-
with_rails_helpers
|
39
37
|
param :name
|
40
38
|
end
|
41
39
|
|
@@ -73,6 +71,13 @@ describe SimpleParams::Params do
|
|
73
71
|
end
|
74
72
|
end
|
75
73
|
|
74
|
+
describe "rails_helpers", rails_helpers: true do
|
75
|
+
it "can build optional class" do
|
76
|
+
klass = AcceptanceParams.new.build_phone
|
77
|
+
klass.should be_a(AcceptanceParams::Phone)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
76
81
|
describe "original_params", original_params: true do
|
77
82
|
it "returns symbolized params hash" do
|
78
83
|
params = AcceptanceParams.new(name: "Tom", address: { "street" => "1 Main St."} )
|
@@ -120,7 +125,8 @@ describe SimpleParams::Params do
|
|
120
125
|
city: nil,
|
121
126
|
zip_code: nil,
|
122
127
|
state: "North Carolina",
|
123
|
-
company: nil
|
128
|
+
company: nil,
|
129
|
+
_destroy: false
|
124
130
|
},
|
125
131
|
phone: nil,
|
126
132
|
dogs: [
|
@@ -160,6 +166,33 @@ describe SimpleParams::Params do
|
|
160
166
|
name = nested.class.name
|
161
167
|
name.should eq("AcceptanceParams::Address")
|
162
168
|
end
|
169
|
+
|
170
|
+
describe "params assignment" do
|
171
|
+
let(:params) do
|
172
|
+
{
|
173
|
+
dogs: [
|
174
|
+
{ name: "Max", age: 12 },
|
175
|
+
{ name: "Spot", age: 4 },
|
176
|
+
{ name: "Pants", age: 6, _destroy: true },
|
177
|
+
],
|
178
|
+
cats: {
|
179
|
+
"0" => { name: "Paws" },
|
180
|
+
"1" => { name: "Turbo", _destroy: "1" },
|
181
|
+
"2" => { name: "Felix" }
|
182
|
+
}
|
183
|
+
}
|
184
|
+
end
|
185
|
+
|
186
|
+
subject { AcceptanceParams.new(params) }
|
187
|
+
|
188
|
+
it "builds correct number of dogs" do
|
189
|
+
subject.dogs.count.should eq(2)
|
190
|
+
end
|
191
|
+
|
192
|
+
it "builds correct number of cats" do
|
193
|
+
subject.cats.count.should eq(2)
|
194
|
+
end
|
195
|
+
end
|
163
196
|
end
|
164
197
|
|
165
198
|
describe "accessors", accessors: true do
|
@@ -233,10 +266,10 @@ describe SimpleParams::Params do
|
|
233
266
|
params.attributes.should eq([:reference, :name, :date_of_birth, :current_time, :age, :color, :sibling_names, :address, :phone, :dogs, :cats, :birds])
|
234
267
|
end
|
235
268
|
|
236
|
-
it "returns array of attribute symbols for nested class"
|
269
|
+
it "returns array of attribute symbols for nested class" do
|
237
270
|
params = AcceptanceParams::Address.new({}, nil, "address")
|
238
271
|
params.parent_attribute_name.should eq(:address)
|
239
|
-
params.attributes.should eq([:street, :city, :zip_code, :state, :company])
|
272
|
+
params.attributes.should eq([:street, :city, :zip_code, :state, :company, :_destroy])
|
240
273
|
end
|
241
274
|
|
242
275
|
it "initializes attributes correctly" do
|
@@ -352,31 +385,31 @@ describe SimpleParams::Params do
|
|
352
385
|
params.errors[:dogs][1][:age].should eq(["is not included in the list", "can't be blank"])
|
353
386
|
end
|
354
387
|
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
388
|
+
it "initializes birds as nil" do
|
389
|
+
params = AcceptanceParams.new
|
390
|
+
params.birds.should be_empty
|
391
|
+
end
|
392
|
+
|
393
|
+
it "allows absense of optional params" do
|
394
|
+
params = AcceptanceParams.new(
|
395
|
+
name: "test",
|
396
|
+
address: {
|
397
|
+
street: "1 Main St.",
|
398
|
+
city: "Asheville",
|
399
|
+
zip_code: "28806"
|
400
|
+
},
|
401
|
+
dogs: [
|
402
|
+
{ name: "spot", age: 13 }
|
403
|
+
],
|
404
|
+
cats: {
|
405
|
+
"0" => {
|
406
|
+
name: "Purr"
|
407
|
+
}
|
408
|
+
},
|
409
|
+
)
|
410
|
+
params.birds.should be_empty
|
411
|
+
params.should be_valid
|
412
|
+
end
|
380
413
|
end
|
381
414
|
|
382
415
|
describe "#validate!" do
|
@@ -603,9 +636,11 @@ describe SimpleParams::Params do
|
|
603
636
|
param :zip_code, String, desc: '', required: false
|
604
637
|
param :state, String, desc: '', required: false
|
605
638
|
param :company, String, desc: '', required: false
|
639
|
+
param :_destroy, Boolean, desc:'', required: false
|
606
640
|
end
|
607
641
|
param :phone, Hash, desc: '', required: false do
|
608
642
|
param :phone_number, String, desc: '', required: true
|
643
|
+
param :_destroy, Boolean, desc:'', required: false
|
609
644
|
end
|
610
645
|
param :dogs, Array, desc: '', required: true do
|
611
646
|
param :name, String, desc: '', required: true
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple_params
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- brycesenz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-12-
|
11
|
+
date: 2015-12-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|