simple_params 1.3.6 → 1.4.0

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
- NTRhYmJhYzhiMmMwMDk5MTE2Njk1OWUwOTdkMjJkMGRkYTYxNjU3Ng==
4
+ N2FhZWYzZTAzNmJhMmE3YjYxOThlNDhkMzM5NzlhYmQxNTMxOTQ5OQ==
5
5
  data.tar.gz: !binary |-
6
- MDgwZmUwNDRhYWU2NGMxZTYwMTBjYzFkYjNhMzAyZTBjYjk1ZmU2Mw==
6
+ OWQ3NmQwYzA2OGZlNTNkNTM4MTY3ZjQ5M2FjNDU3YWU0ODRkZTE5ZQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- OWJjMGRhNmYwZTJkMWU1ZTNmMjBiYmRhZGYzMGE2ZmQ1NjRjODQ2MDIzZTIx
10
- YWJkMWM3YTViNTdiYzA1MTFmYzViZDg1MmNmNDU4M2M2NTQ2ZDQ0MzYzMDE3
11
- MzI0MDRlMDY0ZWRlYzQ4NjBmOWU0Nzc3ZTI5NmU4NTc2Y2Y4ZjU=
9
+ ZDQwMDY2MzZjMTAxNmI1OTAzM2Q5M2VjY2M3YjgzY2E5NzI4ODM1Njk3YTYw
10
+ MzQxZWI0N2VjNDg3YTA3Y2MxOGVlMGMxYWM1OWJlNGQ2MzJhYjM1MzExMjU2
11
+ YWEwMTk5M2Q4NmE1ZTY0YWJkZWFmZjIyY2JkNWE4MWViYWQ1Y2I=
12
12
  data.tar.gz: !binary |-
13
- NjY4NWJhZjExYzAxNzNkM2UwMTU2NTY3ZmQ3ZGQ1ZWM0MTVkNTJjZGFmOWEx
14
- M2ZkMWRkMmNiYjBhY2RjYzIzN2Q2NTgxNzM0ZDc3MzdlOTNmMTcxMGQ4Nzkx
15
- NDdhZGVlNWJiZmY3OTU4MGE1MTM3YjhhOTQyYzhhNzQ2Yzg4OTI=
13
+ NzQ1N2U2MWMxNTg4OGQwMWViYmZlOTFlOGQ2ZjMyNjQyY2JjMDJlZDYwZDBm
14
+ NjJiNWQzZDdkMzYxMThlYTViNDMyNTM3NGNlZjc1ZmQ2Yjg3YWI4MzBiMmVi
15
+ MTU5N2QyMTM1ZWFmMDQwZGQ3OGZmMDRiMzJhODc2NzE5ODJlNWE=
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- simple_params (1.3.5)
4
+ simple_params (1.3.6)
5
5
  activemodel (>= 3.0, < 5.0)
6
6
  shoulda-matchers (~> 2.8)
7
7
  virtus (>= 1.0.0)
@@ -38,14 +38,17 @@ module SimpleParams
38
38
  #{parent}
39
39
  end
40
40
  DEF
41
+ extend ActiveModel::Naming
42
+ klass.class_eval(&block)
43
+ klass.class_eval("self.options = #{options}")
41
44
  if klass.parent_class.using_rails_helpers?
42
45
  klass.instance_eval("with_rails_helpers")
43
- # define a _destroy param (Boolean, default: false)
46
+ end
47
+
48
+ # define a _destroy param (Boolean, default: false)
49
+ if klass.using_rails_helpers?
44
50
  klass.send(:define_attribute, :_destroy, {type: :boolean, default: false})
45
51
  end
46
- extend ActiveModel::Naming
47
- klass.class_eval(&block)
48
- klass.class_eval("self.options = #{options}")
49
52
  end
50
53
  end
51
54
  end
@@ -86,7 +86,15 @@ module SimpleParams
86
86
  init_value = if initializer.is_a?(Array)
87
87
  if klass.with_ids?
88
88
  initializer.first.each_pair.inject([]) do |array, (key, val)|
89
- array << klass.new({key => val}, self)
89
+ destroyed = if val.has_key?(:_destroy)
90
+ val[:_destroy]
91
+ elsif val.has_key?("_destroy")
92
+ val["_destroy"]
93
+ end
94
+ unless [true, "1"].include?(destroyed)
95
+ array << klass.new({key => val}, self)
96
+ end
97
+ array
90
98
  end
91
99
  else
92
100
  initializer.map { |val| klass.new(val, self) }
@@ -1,3 +1,3 @@
1
1
  module SimpleParams
2
- VERSION = "1.3.6"
2
+ VERSION = "1.4.0"
3
3
  end
@@ -28,6 +28,11 @@ class AcceptanceParams < SimpleParams::Params
28
28
  param :age, type: :integer, validations: { inclusion: { in: 1..20 } }
29
29
  end
30
30
 
31
+ nested_array :cats, with_ids: true do
32
+ with_rails_helpers
33
+ param :name
34
+ end
35
+
31
36
  def name_has_letters
32
37
  if name.present? && !(name =~ /^[a-zA-Z]*$/)
33
38
  errors.add(:name, "must only contain letters")
@@ -111,6 +116,12 @@ describe SimpleParams::Params do
111
116
  name: "Spot",
112
117
  age: 8
113
118
  }
119
+ ],
120
+ cats: [
121
+ {
122
+ name: nil,
123
+ _destroy: false
124
+ }
114
125
  ]
115
126
  })
116
127
  end
@@ -204,7 +215,7 @@ describe SimpleParams::Params do
204
215
  describe "attributes", attributes: true do
205
216
  it "returns array of attribute symbols" do
206
217
  params = AcceptanceParams.new
207
- params.attributes.should eq([:reference, :name, :date_of_birth, :current_time, :age, :color, :sibling_names, :address, :phone, :dogs])
218
+ params.attributes.should eq([:reference, :name, :date_of_birth, :current_time, :age, :color, :sibling_names, :address, :phone, :dogs, :cats])
208
219
  end
209
220
 
210
221
  it "returns array of attribute symbols for nested class" do
@@ -320,12 +331,12 @@ describe SimpleParams::Params do
320
331
  end
321
332
  end
322
333
 
323
- describe "#validate!", failing: true do
334
+ describe "#validate!" do
324
335
  let(:params) { AcceptanceParams.new }
325
336
 
326
337
  it "raises error with validation descriptions" do
327
338
  expect { params.validate! }.to raise_error(SimpleParamsError,
328
- "{:name=>[\"can't be blank\"], :address=>{:street=>[\"can't be blank\"], :city=>[\"is too short (minimum is 4 characters)\", \"can't be blank\"]}, :dogs=>[{:name=>[\"can't be blank\"], :age=>[\"is not included in the list\", \"can't be blank\"]}]}"
339
+ "{:name=>[\"can't be blank\"], :address=>{:street=>[\"can't be blank\"], :city=>[\"is too short (minimum is 4 characters)\", \"can't be blank\"]}, :dogs=>[{:name=>[\"can't be blank\"], :age=>[\"is not included in the list\", \"can't be blank\"]}], :cats=>[{:name=>[\"can't be blank\"]}]}"
329
340
  )
330
341
  end
331
342
  end
@@ -345,6 +356,11 @@ describe SimpleParams::Params do
345
356
  dogs: [
346
357
  name: "Spot",
347
358
  age: 6
359
+ ],
360
+ cats: [
361
+ "0" => {
362
+ name: "Fuzzball"
363
+ }
348
364
  ]
349
365
  }
350
366
  end
@@ -379,8 +395,15 @@ describe SimpleParams::Params do
379
395
  phone_number: "234"
380
396
  },
381
397
  dogs: [
382
- name: "Spot",
383
- age: 6
398
+ {
399
+ name: "Spot",
400
+ age: 6
401
+ }
402
+ ],
403
+ cats: [
404
+ "0" => {
405
+ name: "Fuzzball"
406
+ }
384
407
  ]
385
408
  }
386
409
  end
@@ -399,6 +422,51 @@ describe SimpleParams::Params do
399
422
  acceptance_params.should_not be_valid
400
423
  end
401
424
  end
425
+
426
+ context "with destroyed cat" do
427
+ let(:params) do
428
+ {
429
+ name: "Tom",
430
+ age: 41,
431
+ address: {
432
+ street: "1 Main St.",
433
+ city: "Chicago",
434
+ state: "IL",
435
+ zip_code: 33440
436
+ },
437
+ phone: {
438
+ phone_number: "234"
439
+ },
440
+ dogs: [
441
+ {
442
+ name: "Spot",
443
+ age: 6
444
+ }
445
+ ],
446
+ cats: [
447
+ "0" => {
448
+ name: "Fuzzball"
449
+ },
450
+ "1" => {
451
+ name: "Fuzzball 2",
452
+ _destroy: "1"
453
+ }
454
+ ]
455
+ }
456
+ end
457
+
458
+ it "is valid after multiple times" do
459
+ acceptance_params = AcceptanceParams.new(params)
460
+ acceptance_params.valid?
461
+ acceptance_params.should be_valid
462
+ acceptance_params.should be_valid
463
+ end
464
+
465
+ it "only assigns 1 cat", failing: true do
466
+ acceptance_params = AcceptanceParams.new(params)
467
+ acceptance_params.cats.count.should eq(1)
468
+ end
469
+ end
402
470
  end
403
471
  end
404
472
 
@@ -447,6 +515,10 @@ describe SimpleParams::Params do
447
515
  param :name, String, desc: '', required: true
448
516
  param :age, Integer, desc: '', required: true
449
517
  end
518
+ param :cats, Array, desc:'', required: true do
519
+ param :name, String, desc:'', required: true
520
+ param :_destroy, Boolean, desc:'', required: false
521
+ end
450
522
  API_PIE_DOCS
451
523
 
452
524
  expect(documentation).to be_a String
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.3.6
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - brycesenz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-04 00:00:00.000000000 Z
11
+ date: 2015-09-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel