grape-swagger/spec/swagger_v2/api_swagger_v2_response_spe...

111 lines
3.7 KiB
Ruby
Raw Normal View History

require 'spec_helper'
describe 'response' do
include_context "#{MODEL_PARSER} swagger example"
2015-12-18 05:12:00 +08:00
before :all do
module TheApi
class ResponseApi < Grape::API
format :json
desc 'This returns something',
2016-05-07 03:00:36 +08:00
params: Entities::UseResponse.documentation,
failure: [{ code: 400, message: 'NotFound', model: Entities::ApiError }]
post '/params_response' do
2016-05-07 03:00:36 +08:00
{ 'declared_params' => declared(params) }
end
desc 'This returns something',
2016-05-07 03:00:36 +08:00
entity: Entities::UseResponse,
failure: [{ code: 400, message: 'NotFound', model: Entities::ApiError }]
get '/entity_response' do
2016-05-07 03:00:36 +08:00
{ 'declared_params' => declared(params) }
end
2016-03-16 19:30:52 +08:00
desc 'This returns something',
2016-05-07 03:00:36 +08:00
entity: Entities::UseItemResponseAsType,
failure: [{ code: 400, message: 'NotFound', model: Entities::ApiError }]
2016-03-16 19:30:52 +08:00
get '/nested_type' do
2016-05-07 03:00:36 +08:00
{ 'declared_params' => declared(params) }
2016-03-16 19:30:52 +08:00
end
add_swagger_documentation
end
end
end
def app
TheApi::ResponseApi
end
2016-05-07 03:00:36 +08:00
describe 'uses nested type as response object' do
2016-03-16 19:30:52 +08:00
subject do
get '/swagger_doc/nested_type'
JSON.parse(last_response.body)
end
specify do
2016-05-07 03:00:36 +08:00
expect(subject['paths']['/nested_type']['get']).to eql(
'summary' => 'This returns something',
2016-05-07 03:00:36 +08:00
'description' => 'This returns something',
'produces' => ['application/json'],
'responses' => {
'200' => { 'description' => 'This returns something', 'schema' => { '$ref' => '#/definitions/UseItemResponseAsType' } },
'400' => { 'description' => 'NotFound', 'schema' => { '$ref' => '#/definitions/ApiError' } }
},
2016-05-07 03:00:36 +08:00
'tags' => ['nested_type'],
2016-05-11 04:01:13 +08:00
'operationId' => 'getNestedType'
)
expect(subject['definitions']).to eql(swagger_nested_type)
2016-03-16 19:30:52 +08:00
end
end
2016-05-07 03:00:36 +08:00
describe 'uses entity as response object' do
subject do
get '/swagger_doc/entity_response'
JSON.parse(last_response.body)
end
specify do
2016-05-07 03:00:36 +08:00
expect(subject['paths']['/entity_response']['get']).to eql(
'summary' => 'This returns something',
2016-05-07 03:00:36 +08:00
'description' => 'This returns something',
'produces' => ['application/json'],
'responses' => {
'200' => { 'description' => 'This returns something', 'schema' => { '$ref' => '#/definitions/UseResponse' } },
'400' => { 'description' => 'NotFound', 'schema' => { '$ref' => '#/definitions/ApiError' } }
},
2016-05-07 03:00:36 +08:00
'tags' => ['entity_response'],
2016-05-11 04:01:13 +08:00
'operationId' => 'getEntityResponse'
)
expect(subject['definitions']).to eql(swagger_entity_as_response_object)
end
end
2016-05-07 03:00:36 +08:00
describe 'uses params as response object' do
subject do
get '/swagger_doc/params_response'
JSON.parse(last_response.body)
end
specify do
2016-05-07 03:00:36 +08:00
expect(subject['paths']['/params_response']['post']).to eql(
'summary' => 'This returns something',
2016-05-07 03:00:36 +08:00
'description' => 'This returns something',
'produces' => ['application/json'],
'consumes' => ['application/json'],
'parameters' => [
{ 'in' => 'formData', 'name' => 'description', 'type' => 'string', 'required' => false },
{ 'in' => 'formData', 'name' => '$responses', 'type' => 'array', 'items' => { 'type' => 'string' }, 'required' => false }
2016-03-16 19:30:52 +08:00
],
2016-05-07 03:00:36 +08:00
'responses' => {
'201' => { 'description' => 'This returns something' },
'400' => { 'description' => 'NotFound', 'schema' => { '$ref' => '#/definitions/ApiError' } }
},
2016-05-07 03:00:36 +08:00
'tags' => ['params_response'],
2016-05-11 04:01:13 +08:00
'operationId' => 'postParamsResponse'
)
expect(subject['definitions']).to eql(swagger_params_as_response_object)
end
end
end