Skip to content

Commit 893e813

Browse files
anakinjpeter scholz
authored and
peter scholz
committed
Order of header parameters (#448)
* Prepend the header params instead of appending them * Added test for order of the parameters, headers first * Updated CHANGELOG * Changelog entry from fixes to features
1 parent e9adc92 commit 893e813

File tree

3 files changed

+16
-11
lines changed

3 files changed

+16
-11
lines changed

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
#### Features
44

5-
* Your contribution here.
5+
* [#448](https://github.com/ruby-grape/grape-swagger/pull/448): Header parameters are now prepended to the parameter list - [@anakinj](https://github.com/anakinj).
66

77
#### Fixes
88

lib/grape-swagger/endpoint.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ def tag_object(route, version)
203203
def partition_params(route)
204204
declared_params = route.settings[:declared_params] if route.settings[:declared_params].present?
205205
required, exposed = route.params.partition { |x| x.first.is_a? String }
206-
required.concat GrapeSwagger::DocMethods::Headers.parse(route) unless route.headers.nil?
206+
required = GrapeSwagger::DocMethods::Headers.parse(route) + required unless route.headers.nil?
207207
default_type(required)
208208
default_type(exposed)
209209

spec/swagger_v2/api_swagger_v2_headers_spec.rb

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ class HeadersApi < Grape::API
1818
},
1919

2020
entity: Entities::UseResponse
21+
params do
22+
optional :param_x, type: String, desc: 'This is a parameter', documentation: { param_type: 'query' }
23+
end
2124
get '/use_headers' do
2225
{ 'declared_params' => declared(params) }
2326
end
@@ -37,15 +40,17 @@ def app
3740
end
3841

3942
specify do
40-
expect(subject['paths']['/use_headers']['get']['parameters']).to eql(
41-
[
42-
{ 'in' => 'header',
43-
'name' => 'X-Rate-Limit-Limit',
44-
'description' => 'The number of allowed requests in the current period',
45-
'type' => 'integer',
46-
'format' => 'int32',
47-
'required' => false }
48-
]
43+
parameters = subject['paths']['/use_headers']['get']['parameters']
44+
expect(parameters).to include(
45+
'in' => 'header',
46+
'name' => 'X-Rate-Limit-Limit',
47+
'description' => 'The number of allowed requests in the current period',
48+
'type' => 'integer',
49+
'format' => 'int32',
50+
'required' => false
4951
)
52+
expect(parameters.size).to eq(2)
53+
expect(parameters.first['in']).to eq('header')
54+
expect(parameters.last['in']).to eq('query')
5055
end
5156
end

0 commit comments

Comments
 (0)