Skip to content

Commit 47ec64e

Browse files
blakenumbata
authored andcommitted
Add test
1 parent c2e6a5a commit 47ec64e

File tree

1 file changed

+140
-0
lines changed

1 file changed

+140
-0
lines changed
Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
# frozen_string_literal: true
2+
3+
require 'spec_helper'
4+
5+
describe 'format, content_type' do
6+
include_context "#{MODEL_PARSER} swagger example"
7+
8+
before :all do
9+
module TheApi
10+
class ProducesApi < Grape::API
11+
format :json
12+
13+
desc 'This uses json (default) for produces',
14+
failure: [{ code: 400, model: Entities::ApiError }],
15+
entity: Entities::UseResponse
16+
get '/use_default' do
17+
{ 'declared_params' => declared(params) }
18+
end
19+
20+
desc 'This uses formats for produces',
21+
failure: [{ code: 400, model: Entities::ApiError }],
22+
formats: [:xml, :binary, 'application/vdns'],
23+
entity: Entities::UseResponse
24+
get '/use_formats' do
25+
{ 'declared_params' => declared(params) }
26+
end
27+
28+
desc 'This uses content_types for produces',
29+
failure: [{ code: 400, model: Entities::ApiError }],
30+
content_types: [:xml, :binary, 'application/vdns'],
31+
entity: Entities::UseResponse
32+
get '/use_content_types' do
33+
{ 'declared_params' => declared(params) }
34+
end
35+
36+
desc 'This uses produces for produces',
37+
failure: [{ code: 400, model: Entities::ApiError }],
38+
produces: [:xml, :binary, 'application/vdns'],
39+
entity: Entities::UseResponse
40+
get '/use_produces' do
41+
{ 'declared_params' => declared(params) }
42+
end
43+
44+
desc 'This uses consumes for consumes',
45+
failure: [{ code: 400, model: Entities::ApiError }],
46+
consumes: ['application/www_url_encoded'],
47+
entity: Entities::UseResponse
48+
post '/use_consumes' do
49+
{ 'declared_params' => declared(params) }
50+
end
51+
52+
desc 'This uses consumes for consumes',
53+
failure: [{ code: 400, model: Entities::ApiError }],
54+
consumes: ['application/www_url_encoded'],
55+
entity: Entities::UseResponse
56+
patch '/use_consumes' do
57+
{ 'declared_params' => declared(params) }
58+
end
59+
60+
add_swagger_documentation openapi_version: '3.0'
61+
end
62+
end
63+
end
64+
65+
def app
66+
TheApi::ProducesApi
67+
end
68+
69+
let(:produced) do
70+
%w[application/xml application/octet-stream application/vdns]
71+
end
72+
73+
def content(path, status_code)
74+
subject['paths'][path]['get']['responses'][status_code.to_s]['content']
75+
end
76+
77+
describe 'default' do
78+
subject do
79+
get '/swagger_doc/use_default'
80+
JSON.parse(last_response.body)
81+
end
82+
83+
specify do
84+
expect(content('/use_default', 200)).to include('application/json')
85+
expect(content('/use_default', 400)).to include('application/json')
86+
expect(content('/use_default', 200).keys.count).to eq 1
87+
expect(content('/use_default', 400).keys.count).to eq 1
88+
end
89+
end
90+
91+
describe 'formats' do
92+
subject do
93+
get '/swagger_doc/use_formats'
94+
JSON.parse(last_response.body)
95+
end
96+
97+
specify do
98+
expect(content('/use_formats', 200).keys).to eq produced
99+
expect(content('/use_formats', 400).keys).to eq produced
100+
end
101+
end
102+
103+
describe 'content types' do
104+
subject do
105+
get '/swagger_doc/use_content_types'
106+
JSON.parse(last_response.body)
107+
end
108+
109+
specify do
110+
expect(content('/use_content_types', 200).keys).to eq produced
111+
expect(content('/use_content_types', 400).keys).to eq produced
112+
end
113+
end
114+
115+
describe 'produces' do
116+
subject do
117+
get '/swagger_doc/use_produces'
118+
JSON.parse(last_response.body)
119+
end
120+
121+
specify do
122+
expect(content('/use_produces', 200).keys).to eq produced
123+
expect(content('/use_produces', 400).keys).to eq produced
124+
end
125+
end
126+
127+
describe 'consumes' do
128+
subject do
129+
get '/swagger_doc/use_consumes'
130+
JSON.parse(last_response.body)
131+
end
132+
133+
specify do
134+
expect(subject['paths']['/use_consumes']['post']['requestBody']).to include('content')
135+
expect(subject['paths']['/use_consumes']['post']['requestBody']['content'].keys).to eql ['application/www_url_encoded']
136+
expect(subject['paths']['/use_consumes']['patch']['requestBody']).to include('content')
137+
expect(subject['paths']['/use_consumes']['patch']['requestBody']['content'].keys).to eql ['application/www_url_encoded']
138+
end
139+
end
140+
end

0 commit comments

Comments
 (0)