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 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