File tree 2 files changed +28
-3
lines changed
2 files changed +28
-3
lines changed Original file line number Diff line number Diff line change @@ -224,8 +224,13 @@ def response_object(route)
224
224
end
225
225
end
226
226
227
+ def success_code? ( code )
228
+ status = code . is_a? ( Array ) ? code . first : code [ :code ]
229
+ status . between? ( 200 , 299 )
230
+ end
231
+
227
232
def http_codes_from_route ( route )
228
- if route . http_codes . is_a? ( Array ) && route . http_codes . any? { |code | code [ :code ] . between? ( 200 , 299 ) }
233
+ if route . http_codes . is_a? ( Array ) && route . http_codes . any? { |code | success_code? ( code ) }
229
234
route . http_codes . clone
230
235
else
231
236
success_codes_from_route ( route ) + ( route . http_codes || route . options [ :failure ] || [ ] )
Original file line number Diff line number Diff line change 2
2
3
3
require 'spec_helper'
4
4
5
- describe 'http status code behaivours ' do
5
+ describe 'http status code behaviours ' do
6
6
include_context "#{ MODEL_PARSER } swagger example"
7
7
8
8
subject do
9
9
get '/swagger_doc'
10
10
JSON . parse ( last_response . body )
11
11
end
12
12
13
- context 'when non-default success codes are deifined ' do
13
+ context 'when non-default success codes are defined ' do
14
14
let ( :app ) do
15
15
Class . new ( Grape ::API ) do
16
16
desc 'Has explicit success http_codes defined' do
31
31
end
32
32
end
33
33
34
+ context 'when success and failures are defined' do
35
+ let ( :app ) do
36
+ Class . new ( Grape ::API ) do
37
+ desc 'Has explicit success http_codes defined' do
38
+ success code : 202 , model : Entities ::UseResponse , message : 'a changed status code'
39
+ failure [ [ 400 , 'Bad Request' ] ]
40
+ end
41
+
42
+ post '/accepting_endpoint' do
43
+ 'We got the message!'
44
+ end
45
+ add_swagger_documentation
46
+ end
47
+ end
48
+
49
+ it 'only includes the defined http codes' do
50
+ expect ( subject [ 'paths' ] [ '/accepting_endpoint' ] [ 'post' ] [ 'responses' ] . keys . sort ) . to eq ( %w[ 202 400 ] . sort )
51
+ end
52
+ end
53
+
34
54
context 'when no success codes defined' do
35
55
let ( :app ) do
36
56
Class . new ( Grape ::API ) do
You can’t perform that action at this time.
0 commit comments