simple_params 1.0.0 → 1.0.1
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 +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
|