simple_params 1.1.2 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
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.2
4
+ version: 1.2.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-08-27 00:00:00.000000000 Z
11
+ date: 2015-08-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -131,11 +131,18 @@ files:
131
131
  - lib/simple_params/api_pie_doc.rb
132
132
  - lib/simple_params/api_pie_doc/attribute.rb
133
133
  - lib/simple_params/api_pie_doc/attribute_base.rb
134
- - lib/simple_params/api_pie_doc/nested_array.rb
135
134
  - lib/simple_params/api_pie_doc/nested_attribute.rb
136
135
  - lib/simple_params/attribute.rb
136
+ - lib/simple_params/concerns/date_time_helpers.rb
137
+ - lib/simple_params/concerns/has_attributes.rb
138
+ - lib/simple_params/concerns/has_typed_params.rb
139
+ - lib/simple_params/concerns/hash_helpers.rb
140
+ - lib/simple_params/concerns/rails_helpers.rb
141
+ - lib/simple_params/concerns/strict_params.rb
142
+ - lib/simple_params/concerns/validations.rb
137
143
  - lib/simple_params/errors.rb
138
144
  - lib/simple_params/formatter.rb
145
+ - lib/simple_params/nested_params.rb
139
146
  - lib/simple_params/params.rb
140
147
  - lib/simple_params/simple_params_error.rb
141
148
  - lib/simple_params/type_mappings.rb
@@ -146,12 +153,10 @@ files:
146
153
  - lib/simple_params/validation_matchers/optional_parameter_matcher.rb
147
154
  - lib/simple_params/validation_matchers/required_parameter_matcher.rb
148
155
  - lib/simple_params/validation_matchers/validation_matcher.rb
149
- - lib/simple_params/validations.rb
150
156
  - lib/simple_params/version.rb
151
157
  - simple_params.gemspec
152
158
  - spec/acceptance_spec.rb
153
159
  - spec/api_pie_doc/attribute_spec.rb
154
- - spec/api_pie_doc/nested_array_spec.rb
155
160
  - spec/api_pie_doc/nested_attribute_spec.rb
156
161
  - spec/api_pie_doc_spec.rb
157
162
  - spec/attribute_spec.rb
@@ -160,7 +165,9 @@ files:
160
165
  - spec/fixtures/validator_params.rb
161
166
  - spec/formatter_spec.rb
162
167
  - spec/multiple_classes_spec.rb
168
+ - spec/nested_params_spec.rb
163
169
  - spec/params_spec.rb
170
+ - spec/rails_integration_spec.rb
164
171
  - spec/spec_helper.rb
165
172
  - spec/support/shared_examples/base_attribute.rb
166
173
  - spec/validation_matchers/coercion_matcher_spec.rb
@@ -196,7 +203,6 @@ summary: A DSL for specifying params, including type coercion and validation
196
203
  test_files:
197
204
  - spec/acceptance_spec.rb
198
205
  - spec/api_pie_doc/attribute_spec.rb
199
- - spec/api_pie_doc/nested_array_spec.rb
200
206
  - spec/api_pie_doc/nested_attribute_spec.rb
201
207
  - spec/api_pie_doc_spec.rb
202
208
  - spec/attribute_spec.rb
@@ -205,7 +211,9 @@ test_files:
205
211
  - spec/fixtures/validator_params.rb
206
212
  - spec/formatter_spec.rb
207
213
  - spec/multiple_classes_spec.rb
214
+ - spec/nested_params_spec.rb
208
215
  - spec/params_spec.rb
216
+ - spec/rails_integration_spec.rb
209
217
  - spec/spec_helper.rb
210
218
  - spec/support/shared_examples/base_attribute.rb
211
219
  - spec/validation_matchers/coercion_matcher_spec.rb
@@ -1,31 +0,0 @@
1
- module SimpleParams
2
- class ApiPieDoc::NestedArray < ApiPieDoc::AttributeBase
3
-
4
- attr_accessor :attributes
5
-
6
- def initialize(simple_params_array)
7
- super
8
- self.attributes = attribute.values[0].map { |attribute| ApiPieDoc::Attribute.new(attribute) }
9
- self.options ||= attribute.delete(:options) || attribute[1]
10
- end
11
-
12
- def name
13
- attribute.keys.first.to_s
14
- end
15
-
16
- def to_s
17
- return nil if do_not_document?
18
- nested_description
19
- end
20
-
21
- private
22
-
23
- def nested_description
24
- start = "param :#{name}, Array, #{description}, #{requirement_description} do"
25
- attribute_descriptors = []
26
- attributes.each { |attribute| attribute_descriptors << attribute.to_s }
27
- finish = "end"
28
- [start, attribute_descriptors, finish].flatten.join("\n")
29
- end
30
- end
31
- end
@@ -1,41 +0,0 @@
1
- require "active_model"
2
-
3
- module SimpleParams
4
- module Validations
5
- extend ActiveModel::Validations
6
-
7
- # Overriding #valid? to provide recursive validating of
8
- # nested params
9
- def valid?(context = nil)
10
- current_context, self.validation_context = validation_context, context
11
- errors.clear
12
- run_validations!
13
-
14
- nested_hash_validations = []
15
- nested_hashes.each do |key, value|
16
- nested_class = send("#{key}")
17
- nested_hash_validations << nested_class.valid?
18
- end
19
-
20
-
21
- nested_array_validations = []
22
- nested_arrays.each do |key, array|
23
- nested_array = send("#{key}")
24
- nested_array_validations = nested_array.map { |a| a.valid? }
25
- end
26
-
27
- errors.empty? &&
28
- nested_hash_validations.all? &&
29
- nested_array_validations.flatten.all?
30
-
31
- ensure
32
- self.validation_context = current_context
33
- end
34
-
35
- def validate!
36
- unless valid?
37
- raise SimpleParamsError, self.errors.to_hash.to_s
38
- end
39
- end
40
- end
41
- end
@@ -1,46 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe SimpleParams::ApiPieDoc::NestedArray do
4
-
5
- let(:simple_param_attribute) {
6
- {:address=>
7
- {:street=>{:type=>:string},
8
- :city=>{:validations=>{:length=>{:in=>4..40}, :presence=>true}, :type=>:string},
9
- :zip_code=>{:optional=>true, :type=>:string},
10
- :state=>{:default=>"North Carolina", :type=>:string}
11
- },
12
- :options=>{desc: 'i like pie'}
13
- }
14
- }
15
- let(:nested_attribute) { described_class.new(simple_param_attribute) }
16
-
17
- it_behaves_like 'a base attribute'
18
-
19
- describe '#initialize' do
20
- specify 'should give instance an attribute' do
21
- expect(nested_attribute.attribute).to eq simple_param_attribute
22
- end
23
-
24
- specify 'should give instance options' do
25
- expect(nested_attribute.options).to eq({ desc: 'i like pie' })
26
- end
27
- end
28
-
29
- describe '#name' do
30
- specify 'should set respond with the right name' do
31
- expect(nested_attribute.name).to eq 'address'
32
- end
33
- end
34
-
35
- describe '#options' do
36
- specify 'should return nested attribute options' do
37
- expect(nested_attribute.options).to eq({desc: 'i like pie'})
38
- end
39
- end
40
-
41
- describe '#to_s' do
42
- specify 'should return properly formatted string' do
43
- expect(nested_attribute.to_s).to eq("param :address, Array, desc: 'i like pie', required: true do\nparam :street, String, desc: '', required: true\nparam :city, String, desc: '', required: true\nparam :zip_code, String, desc: '', required: false\nparam :state, String, desc: '', required: false\nend")
44
- end
45
- end
46
- end