simple_params 1.1.1 → 1.1.2
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 +8 -8
- data/Gemfile.lock +1 -1
- data/lib/simple_params/validations.rb +11 -3
- data/lib/simple_params/version.rb +1 -1
- data/spec/acceptance_spec.rb +14 -2
- data/spec/params_spec.rb +54 -26
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZGYzNDdhM2YxYjQzNzI3NWEzOTlkMGRjNDA2M2NiN2NmZjA2ZGFjOQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
OGM2ODA5ZWI2ZTVjMDFlY2EwMzhmY2Y2ODM0ZTY5MmY5YjFmYTA0MA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YWQzNjllOTcyYjAxNDM5NWNhYmI0ZjM0ZmVlMjFlMGE4MWU0ZjIwMDIzNmFi
|
10
|
+
ZmNmZjY1NDYyMTg5MDYyYjhjZDI5ZjE0MDU5MmI2YjUwYzBjMjg3M2Q1NzVi
|
11
|
+
MzcxMDFlOWY3MDAwZjM1MGNhMGI3ZDJjZWFjOTg2YmYyMGVjYTE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YTRmNmQ0YzdmMmRjYWNlOTU5ZGNmZDJjZWNjOTRkZDEyZGNkOGUzOGNjZTRk
|
14
|
+
MTAyMGE0ZjlmNWU2MDJjOGNjOGVkOTFhMjc4MjM2NGY3NmZhY2JlNzc3OWM5
|
15
|
+
MWJjZTgwNThjMTg3NjBmNzFjN2ViOGIzYTI5M2VlYzc5MTQzYjk=
|
data/Gemfile.lock
CHANGED
@@ -10,16 +10,24 @@ module SimpleParams
|
|
10
10
|
current_context, self.validation_context = validation_context, context
|
11
11
|
errors.clear
|
12
12
|
run_validations!
|
13
|
+
|
14
|
+
nested_hash_validations = []
|
13
15
|
nested_hashes.each do |key, value|
|
14
16
|
nested_class = send("#{key}")
|
15
|
-
nested_class.valid?
|
17
|
+
nested_hash_validations << nested_class.valid?
|
16
18
|
end
|
17
19
|
|
20
|
+
|
21
|
+
nested_array_validations = []
|
18
22
|
nested_arrays.each do |key, array|
|
19
23
|
nested_array = send("#{key}")
|
20
|
-
nested_array.
|
24
|
+
nested_array_validations = nested_array.map { |a| a.valid? }
|
21
25
|
end
|
22
|
-
|
26
|
+
|
27
|
+
errors.empty? &&
|
28
|
+
nested_hash_validations.all? &&
|
29
|
+
nested_array_validations.flatten.all?
|
30
|
+
|
23
31
|
ensure
|
24
32
|
self.validation_context = current_context
|
25
33
|
end
|
data/spec/acceptance_spec.rb
CHANGED
@@ -184,7 +184,6 @@ describe SimpleParams::Params do
|
|
184
184
|
end
|
185
185
|
end
|
186
186
|
|
187
|
-
|
188
187
|
describe "attributes", attributes: true do
|
189
188
|
it "returns array of attribute symbols" do
|
190
189
|
params = AcceptanceParams.new
|
@@ -279,7 +278,7 @@ describe SimpleParams::Params do
|
|
279
278
|
params.errors[:color].should eq(["is not included in the list"])
|
280
279
|
end
|
281
280
|
|
282
|
-
describe "nested
|
281
|
+
describe "nested hashes", nested_hash: true do
|
283
282
|
it "validates presence of required param" do
|
284
283
|
params.should_not be_valid
|
285
284
|
params.errors[:address][:street].should eq(["can't be blank"])
|
@@ -291,6 +290,19 @@ describe SimpleParams::Params do
|
|
291
290
|
end
|
292
291
|
end
|
293
292
|
|
293
|
+
describe "nested arrays", nested_array: true do
|
294
|
+
it "validates presence of required param" do
|
295
|
+
params = AcceptanceParams.new(
|
296
|
+
dogs: [
|
297
|
+
{ name: "Max", age: 11 },
|
298
|
+
{ name: "Spot" }
|
299
|
+
]
|
300
|
+
)
|
301
|
+
params.should_not be_valid
|
302
|
+
params.errors[:dogs][1][:age].should eq(["is not included in the list", "can't be blank"])
|
303
|
+
end
|
304
|
+
end
|
305
|
+
|
294
306
|
describe "#validate!" do
|
295
307
|
let(:params) { AcceptanceParams.new }
|
296
308
|
|
data/spec/params_spec.rb
CHANGED
@@ -83,7 +83,7 @@ describe SimpleParams::Params do
|
|
83
83
|
end
|
84
84
|
end
|
85
85
|
|
86
|
-
describe "
|
86
|
+
describe "raw_values", raw_values: true do
|
87
87
|
let(:params) { DummyParams.new(dogs: [{}]) }
|
88
88
|
|
89
89
|
it "can access raw values for non-formatted param" do
|
@@ -170,35 +170,63 @@ describe SimpleParams::Params do
|
|
170
170
|
end
|
171
171
|
|
172
172
|
describe "validations", validations: true do
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
173
|
+
context "with multiple invalid params" do
|
174
|
+
let(:params) do
|
175
|
+
DummyParams.new(
|
176
|
+
name: nil,
|
177
|
+
age: 30,
|
178
|
+
address: {
|
179
|
+
city: "Greenville"
|
180
|
+
},
|
181
|
+
dogs: [
|
182
|
+
{ name: "Spot", age: 12 },
|
183
|
+
{ age: 14 }
|
184
|
+
]
|
185
|
+
)
|
186
|
+
end
|
186
187
|
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
188
|
+
it "validates required params" do
|
189
|
+
params.should_not be_valid
|
190
|
+
params.errors[:name].should eq(["can't be blank"])
|
191
|
+
end
|
191
192
|
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
193
|
+
it "validates nested params" do
|
194
|
+
params.should_not be_valid
|
195
|
+
params.address.errors[:street].should eq(["can't be blank"])
|
196
|
+
params.errors[:address][:street].should eq(["can't be blank"])
|
197
|
+
end
|
198
|
+
|
199
|
+
it "validates nested arrays" do
|
200
|
+
params.should_not be_valid
|
201
|
+
params.errors[:dogs][0][:name].should eq([])
|
202
|
+
params.errors[:dogs][1][:name].should eq(["can't be blank"])
|
203
|
+
end
|
196
204
|
end
|
197
205
|
|
198
|
-
|
199
|
-
params
|
200
|
-
|
201
|
-
|
206
|
+
context "with only invalid nested array", fail: true do
|
207
|
+
let(:params) do
|
208
|
+
DummyParams.new(
|
209
|
+
name: "Bill",
|
210
|
+
age: 30,
|
211
|
+
address: {
|
212
|
+
street: "1 Main St.",
|
213
|
+
city: "Greenville"
|
214
|
+
},
|
215
|
+
phone: {
|
216
|
+
phone_number: "8085551212"
|
217
|
+
},
|
218
|
+
dogs: [
|
219
|
+
{ name: "Spot", age: 12 },
|
220
|
+
{ age: 14 }
|
221
|
+
]
|
222
|
+
)
|
223
|
+
end
|
224
|
+
|
225
|
+
it "validates nested arrays" do
|
226
|
+
params.should_not be_valid
|
227
|
+
params.errors[:dogs][0][:name].should eq([])
|
228
|
+
params.errors[:dogs][1][:name].should eq(["can't be blank"])
|
229
|
+
end
|
202
230
|
end
|
203
231
|
end
|
204
232
|
|
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.1.
|
4
|
+
version: 1.1.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-08-
|
11
|
+
date: 2015-08-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|