simple_params 1.1.1 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZjljZmQxYWFkNjdhMzhhNDNiOWRmMDk3Yjg2Y2UxNGZhNDUxMTQzNQ==
4
+ ZGYzNDdhM2YxYjQzNzI3NWEzOTlkMGRjNDA2M2NiN2NmZjA2ZGFjOQ==
5
5
  data.tar.gz: !binary |-
6
- MDBlNzRiODJmY2I5YjBmOTQ3NWI5MTRhZTE0ODRjMjY5ZmYzYmUwNA==
6
+ OGM2ODA5ZWI2ZTVjMDFlY2EwMzhmY2Y2ODM0ZTY5MmY5YjFmYTA0MA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NzM0ZTZmNzI4MmFhMTA4ZTk2ZDYxYTYyNjg1ZmFlYzRhNzc1ZmZkM2Q5ZTJh
10
- MWM4Yjg5NGFiZDY5MGEwNDg1YWI2MmJiZDk5ZDRiM2MwYzQ3MjQyYWMyN2Vk
11
- NTZkY2Q0Y2I0MTYwYjBjZWQyOGZkYzY5NjhjZmU5Njg5N2JkMjI=
9
+ YWQzNjllOTcyYjAxNDM5NWNhYmI0ZjM0ZmVlMjFlMGE4MWU0ZjIwMDIzNmFi
10
+ ZmNmZjY1NDYyMTg5MDYyYjhjZDI5ZjE0MDU5MmI2YjUwYzBjMjg3M2Q1NzVi
11
+ MzcxMDFlOWY3MDAwZjM1MGNhMGI3ZDJjZWFjOTg2YmYyMGVjYTE=
12
12
  data.tar.gz: !binary |-
13
- OTU4OGJkNDUxNTRmYTczNWUwYWFkMjgzMGZmN2Q1YjY0ZGRkMjY5YzNlZjQ4
14
- OWIyMGEzYjY0Y2QwMjhjMDgxMjFiNjBhZDk0MTgyYjFkYmUyODcxYTY3MTgx
15
- MDkwYjAzMTRkZjE4OTk2ZjM1ZmZiYWQ0NGQzMDA1Mzg5M2MzYWI=
13
+ YTRmNmQ0YzdmMmRjYWNlOTU5ZGNmZDJjZWNjOTRkZDEyZGNkOGUzOGNjZTRk
14
+ MTAyMGE0ZjlmNWU2MDJjOGNjOGVkOTFhMjc4MjM2NGY3NmZhY2JlNzc3OWM5
15
+ MWJjZTgwNThjMTg3NjBmNzFjN2ViOGIzYTI5M2VlYzc5MTQzYjk=
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- simple_params (1.1.0)
4
+ simple_params (1.1.1)
5
5
  activemodel (>= 3.0, < 5.0)
6
6
  shoulda-matchers (~> 2.8)
7
7
  virtus (>= 1.0.0)
@@ -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.each { |a| a.valid? }
24
+ nested_array_validations = nested_array.map { |a| a.valid? }
21
25
  end
22
- errors.empty?
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
@@ -1,3 +1,3 @@
1
1
  module SimpleParams
2
- VERSION = "1.1.1"
2
+ VERSION = "1.1.2"
3
3
  end
@@ -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 params", nested: true do
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 "accessors", accessors: true do
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
- let(:params) do
174
- DummyParams.new(
175
- name: nil,
176
- age: 30,
177
- address: {
178
- city: "Greenville"
179
- },
180
- dogs: [
181
- { name: "Spot", age: 12 },
182
- { age: 14 }
183
- ]
184
- )
185
- end
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
- it "validates required params" do
188
- params.should_not be_valid
189
- params.errors[:name].should eq(["can't be blank"])
190
- end
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
- it "validates nested params" do
193
- params.should_not be_valid
194
- params.address.errors[:street].should eq(["can't be blank"])
195
- params.errors[:address][:street].should eq(["can't be blank"])
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
- it "validates nested arrays" do
199
- params.should_not be_valid
200
- params.errors[:dogs][0][:name].should eq([])
201
- params.errors[:dogs][1][:name].should eq(["can't be blank"])
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.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-26 00:00:00.000000000 Z
11
+ date: 2015-08-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel