simple_params 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/Gemfile.lock +1 -1
- data/lib/simple_params/api_pie_doc/attribute_base.rb +3 -5
- data/lib/simple_params/attribute.rb +7 -2
- data/lib/simple_params/params.rb +13 -1
- data/lib/simple_params/version.rb +1 -1
- data/spec/acceptance_spec.rb +22 -7
- data/spec/api_pie_doc/nested_attribute_spec.rb +1 -1
- data/spec/attribute_spec.rb +34 -0
- data/spec/params_spec.rb +5 -5
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZTliMTVhZjE0OTJmN2M3MDgxYTJkZjQ2NTZmNTc1NWRmYzkyOWFmOQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MzZjMDI5OTIyZjgzMjkzMDI0MGQ2ODAwMDc3ODZmYjBhMzkzMTBkMA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MTJhNGIxYjEyNzg5ZDgyZmUwYzk2YjcyYTAwZDUxY2M3NTExZjY2MTUyZDc5
|
10
|
+
MGQ1ZWViODEzZjJlMGFjOWI4ODAwOTVhYjNlZWE4ZDYzY2RlMmIzZTVkOTZh
|
11
|
+
MjRhNjIyZDNjMzBlZmI3YmFjM2Q5YmVmYjE1NWIxMzdjYWJiMzg=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MDAyODRiN2ZhZGY5YTg5NjM2M2NjMTZhZGFjYjhjN2EyMDkzZGM0NTgyZWIx
|
14
|
+
M2JjZjMwODU2YTFmOTkzNDAzYTQwY2RiZWM4NGRiYWJjZmM5MTQ2MTM2YWFj
|
15
|
+
ZDM3NjJlMmVmNDY3MDZiMmU4MDgxODhlYjAwZjMwNzI3Y2NlNjk=
|
data/Gemfile.lock
CHANGED
@@ -15,12 +15,10 @@ module SimpleParams
|
|
15
15
|
NotValidValueError = Class.new(StandardError)
|
16
16
|
|
17
17
|
def requirement_description
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
optional = options[:optional]
|
19
|
+
has_default = options.has_key?(:default)
|
20
|
+
if optional || has_default
|
21
21
|
"required: false"
|
22
|
-
when false
|
23
|
-
"required: true"
|
24
22
|
else
|
25
23
|
"required: true"
|
26
24
|
end
|
@@ -5,6 +5,10 @@ module SimpleParams
|
|
5
5
|
class Attribute
|
6
6
|
attr_reader :parent
|
7
7
|
attr_reader :name
|
8
|
+
attr_reader :type
|
9
|
+
attr_reader :default
|
10
|
+
attr_reader :validations
|
11
|
+
attr_reader :formatter
|
8
12
|
|
9
13
|
def initialize(parent, name, opts={})
|
10
14
|
@parent = parent
|
@@ -13,11 +17,12 @@ module SimpleParams
|
|
13
17
|
@value = nil
|
14
18
|
@default = opts[:default]
|
15
19
|
@formatter = opts[:formatter]
|
20
|
+
@validations = opts[:validations] || {}
|
16
21
|
end
|
17
22
|
|
18
23
|
def raw_value
|
19
24
|
empty = @value.nil? || (@value.is_a?(String) && @value.blank?)
|
20
|
-
empty ?
|
25
|
+
empty ? raw_default : @value
|
21
26
|
end
|
22
27
|
|
23
28
|
def value
|
@@ -39,7 +44,7 @@ module SimpleParams
|
|
39
44
|
end
|
40
45
|
|
41
46
|
private
|
42
|
-
def
|
47
|
+
def raw_default
|
43
48
|
if @default.is_a?(Proc)
|
44
49
|
@default.call(parent, self)
|
45
50
|
else
|
data/lib/simple_params/params.rb
CHANGED
@@ -84,7 +84,19 @@ module SimpleParams
|
|
84
84
|
|
85
85
|
def add_validations(name, opts = {})
|
86
86
|
validations = opts[:validations] || {}
|
87
|
-
|
87
|
+
has_default = opts.has_key?(:default) # checking has_key? because :default may be nil
|
88
|
+
optional = opts[:optional]
|
89
|
+
if !validations.empty?
|
90
|
+
if optional || has_default
|
91
|
+
validations.merge!(allow_nil: true)
|
92
|
+
else
|
93
|
+
validations.merge!(presence: true)
|
94
|
+
end
|
95
|
+
else
|
96
|
+
if !optional && !has_default
|
97
|
+
validations.merge!(presence: true)
|
98
|
+
end
|
99
|
+
end
|
88
100
|
validates name, validations unless validations.empty?
|
89
101
|
end
|
90
102
|
|
data/spec/acceptance_spec.rb
CHANGED
@@ -49,11 +49,11 @@ describe SimpleParams::Params do
|
|
49
49
|
name.should eq("AcceptanceParams::Address")
|
50
50
|
end
|
51
51
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
52
|
+
it "names nested class model_class correctly" do
|
53
|
+
nested = AcceptanceParams.new.address
|
54
|
+
name = nested.class.name
|
55
|
+
name.should eq("AcceptanceParams::Address")
|
56
|
+
end
|
57
57
|
end
|
58
58
|
|
59
59
|
describe "accessors", accessors: true do
|
@@ -103,6 +103,21 @@ describe SimpleParams::Params do
|
|
103
103
|
params = AcceptanceParams.new
|
104
104
|
params.attributes.should eq([:reference, :name, :age, :color, :address])
|
105
105
|
end
|
106
|
+
|
107
|
+
it "returns array of attribute symbols for nested class" do
|
108
|
+
params = AcceptanceParams::Address.new
|
109
|
+
params.attributes.should eq([:street, :city, :zip_code, :state, :company])
|
110
|
+
end
|
111
|
+
|
112
|
+
it "initializes attributes correctly" do
|
113
|
+
params = AcceptanceParams.new
|
114
|
+
attribute = params.instance_variable_get("@age_attribute")
|
115
|
+
attribute.parent.should eq(params)
|
116
|
+
attribute.name.should eq(:age)
|
117
|
+
attribute.type.should eq(Integer)
|
118
|
+
attribute.formatter.should be_nil
|
119
|
+
attribute.validations.should eq({ inclusion: { in: 18..100 }, allow_nil: true })
|
120
|
+
end
|
106
121
|
end
|
107
122
|
|
108
123
|
describe "array syntax", array_syntax: true do
|
@@ -235,12 +250,12 @@ describe SimpleParams::Params do
|
|
235
250
|
param:reference, Object, desc:'', required: false
|
236
251
|
param :name, String, desc: '', required: true
|
237
252
|
param :age, Integer, desc: '', required: false
|
238
|
-
param :color, String, desc: '', required:
|
253
|
+
param :color, String, desc: '', required: false
|
239
254
|
param :address, Hash, desc: '', required: true do
|
240
255
|
param :street, String, desc: '', required: true
|
241
256
|
param :city, String, desc: '', required: true
|
242
257
|
param :zip_code, String, desc: '', required: false
|
243
|
-
param :state, String, desc: '', required:
|
258
|
+
param :state, String, desc: '', required: false
|
244
259
|
param :company, String, desc: '', required: false
|
245
260
|
end
|
246
261
|
API_PIE_DOCS
|
@@ -40,7 +40,7 @@ describe SimpleParams::ApiPieDoc::NestedAttribute do
|
|
40
40
|
|
41
41
|
describe '#to_s' do
|
42
42
|
specify 'should return properly formatted string' do
|
43
|
-
expect(nested_attribute.to_s).to eq("param :address, Hash, 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:
|
43
|
+
expect(nested_attribute.to_s).to eq("param :address, Hash, 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
44
|
end
|
45
45
|
end
|
46
46
|
end
|
data/spec/attribute_spec.rb
CHANGED
@@ -105,6 +105,10 @@ describe SimpleParams::Attribute do
|
|
105
105
|
context "with static default" do
|
106
106
|
let(:model) { described_class.new(house, "color", { default: "something" })}
|
107
107
|
|
108
|
+
it "has default attr_reader" do
|
109
|
+
model.default.should eq("something")
|
110
|
+
end
|
111
|
+
|
108
112
|
it "uses default when value not set" do
|
109
113
|
model.value.should eq("something")
|
110
114
|
end
|
@@ -116,6 +120,10 @@ describe SimpleParams::Attribute do
|
|
116
120
|
end
|
117
121
|
let(:model) { described_class.new(house, "color", { default: default })}
|
118
122
|
|
123
|
+
it "has default attr_reader" do
|
124
|
+
model.default.should eq(default)
|
125
|
+
end
|
126
|
+
|
119
127
|
it "uses default when value not set" do
|
120
128
|
model.value.should eq("My house rocks!")
|
121
129
|
end
|
@@ -126,6 +134,10 @@ describe SimpleParams::Attribute do
|
|
126
134
|
context "with function reference" do
|
127
135
|
let(:model) { described_class.new(house, "color", { formatter: :capitalize })}
|
128
136
|
|
137
|
+
it "has formatter attr_reader" do
|
138
|
+
model.formatter.should eq(:capitalize)
|
139
|
+
end
|
140
|
+
|
129
141
|
it "uses method formatter from parent" do
|
130
142
|
model.value = "lower"
|
131
143
|
model.value.should eq("LOWER")
|
@@ -139,10 +151,32 @@ describe SimpleParams::Attribute do
|
|
139
151
|
|
140
152
|
let(:model) { described_class.new(house, "color", { formatter: formatter })}
|
141
153
|
|
154
|
+
it "has formatter attr_reader" do
|
155
|
+
model.formatter.should eq(formatter)
|
156
|
+
end
|
157
|
+
|
142
158
|
it "uses Proc formatter on value" do
|
143
159
|
model.value = "rocks"
|
144
160
|
model.value.should eq("My house ROCKS")
|
145
161
|
end
|
146
162
|
end
|
147
163
|
end
|
164
|
+
|
165
|
+
describe "validations" do
|
166
|
+
context "without validations" do
|
167
|
+
let(:model) { described_class.new(house, "color", {})}
|
168
|
+
|
169
|
+
it "has empty hash as validations" do
|
170
|
+
model.validations.should eq({})
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
context "with validations" do
|
175
|
+
let(:model) { described_class.new(house, "color", { validations: { presence: true } })}
|
176
|
+
|
177
|
+
it "has validations hash" do
|
178
|
+
model.validations.should eq({ presence: true })
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end
|
148
182
|
end
|
data/spec/params_spec.rb
CHANGED
@@ -316,20 +316,20 @@ describe SimpleParams::Params do
|
|
316
316
|
api_docs = <<-API_PIE_DOCS
|
317
317
|
param :name, String, desc: '', required: true
|
318
318
|
param :age, Integer, desc: '', required: false
|
319
|
-
param :first_initial, String, desc: '', required:
|
319
|
+
param :first_initial, String, desc: '', required: false
|
320
320
|
param :amount, desc: '', required: false
|
321
|
-
param :color, String, desc: '', required:
|
321
|
+
param :color, String, desc: '', required: false
|
322
322
|
param :height, String, desc: '', required: false
|
323
323
|
param :address, Hash, desc: '', required: true do
|
324
324
|
param :street, String, desc: '', required: true
|
325
325
|
param :city, String, desc: '', required: true
|
326
326
|
param :zip_code, String, desc: '', required: false
|
327
|
-
param :state, String, desc: '', required:
|
327
|
+
param :state, String, desc: '', required: false
|
328
328
|
end
|
329
329
|
param :phone, Hash, desc: '', required: true do
|
330
|
-
param :cell_phone, desc: '', required:
|
330
|
+
param :cell_phone, desc: '', required: false
|
331
331
|
param :phone_number, String, desc: '', required: true
|
332
|
-
param :area_code, String, desc: '', required:
|
332
|
+
param :area_code, String, desc: '', required: false
|
333
333
|
end
|
334
334
|
API_PIE_DOCS
|
335
335
|
|
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.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- brycesenz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
11
|
+
date: 2015-06-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|