@@ -58,6 +58,48 @@ def app; subject end
58
58
end
59
59
end
60
60
61
+ context 'required with a block' do
62
+ before do
63
+ subject . params {
64
+ requires :items do
65
+ requires :key
66
+ end
67
+ }
68
+ subject . get '/required' do 'required works' ; end
69
+ end
70
+
71
+ it 'errors when param not present' do
72
+ get '/required'
73
+ last_response . status . should == 400
74
+ last_response . body . should == 'missing parameter: items[key]'
75
+ end
76
+
77
+ it "doesn't throw a missing param when param is present" do
78
+ get '/required' , { :items => [ :key => 'hello' , :key => 'world' ] }
79
+ last_response . status . should == 200
80
+ last_response . body . should == 'required works'
81
+ end
82
+
83
+ it "doesn't allow more than one parameter" do
84
+ expect {
85
+ subject . params {
86
+ requires ( :items , desc : 'Foo' ) do
87
+ requires :key
88
+ end
89
+ }
90
+ } . to raise_error ArgumentError
91
+ end
92
+
93
+ it 'adds to declared parameters' do
94
+ subject . params {
95
+ requires :items do
96
+ requires :key
97
+ end
98
+ }
99
+ subject . settings [ :declared_params ] . should == [ :items => [ :key ] ]
100
+ end
101
+ end
102
+
61
103
context 'group' do
62
104
before do
63
105
subject . params {
@@ -90,10 +132,10 @@ def app; subject end
90
132
end
91
133
end
92
134
93
- context 'optional group ' do
135
+ context 'optional with a block ' do
94
136
before do
95
137
subject . params {
96
- optional_group :items do
138
+ optional :items do
97
139
requires :key
98
140
end
99
141
}
@@ -120,21 +162,21 @@ def app; subject end
120
162
121
163
it 'adds to declared parameters' do
122
164
subject . params {
123
- optional_group :items do
165
+ optional :items do
124
166
requires :key
125
167
end
126
168
}
127
169
subject . settings [ :declared_params ] . should == [ :items => [ :key ] ]
128
170
end
129
171
end
130
172
131
- context 'nested optional groups ' do
173
+ context 'nested optional blocks ' do
132
174
before do
133
175
subject . params {
134
- optional_group :items do
176
+ optional :items do
135
177
requires :key
136
- optional_group ( :optional_subitems ) { requires :value }
137
- group ( :required_subitems ) { requires :value }
178
+ optional ( :optional_subitems ) { requires :value }
179
+ requires ( :required_subitems ) { requires :value }
138
180
end
139
181
}
140
182
subject . get ( '/nested_optional_group' ) { 'nested optional group works' }
@@ -168,10 +210,10 @@ def app; subject end
168
210
169
211
it 'adds to declared parameters' do
170
212
subject . params {
171
- optional_group :items do
213
+ optional :items do
172
214
requires :key
173
- optional_group ( :optional_subitems ) { requires :value }
174
- group ( :required_subitems ) { requires :value }
215
+ optional ( :optional_subitems ) { requires :value }
216
+ requires ( :required_subitems ) { requires :value }
175
217
end
176
218
}
177
219
subject . settings [ :declared_params ] . should == [ :items => [ :key , { :optional_subitems => [ :value ] } , { :required_subitems => [ :value ] } ] ]
0 commit comments