grape-swagger 0.20.2 → 0.20.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +0 -3
  3. data/.rubocop_todo.yml +43 -33
  4. data/.travis.yml +22 -13
  5. data/CHANGELOG.md +29 -53
  6. data/Gemfile +1 -1
  7. data/README.md +24 -24
  8. data/example/api/endpoints.rb +28 -29
  9. data/example/api/entities.rb +1 -1
  10. data/example/config.ru +5 -7
  11. data/grape-swagger.gemspec +1 -1
  12. data/lib/grape-swagger.rb +9 -6
  13. data/lib/grape-swagger/doc_methods.rb +1 -1
  14. data/lib/grape-swagger/doc_methods/extensions.rb +3 -3
  15. data/lib/grape-swagger/doc_methods/headers.rb +1 -1
  16. data/lib/grape-swagger/doc_methods/move_params.rb +25 -16
  17. data/lib/grape-swagger/doc_methods/operation_id.rb +2 -2
  18. data/lib/grape-swagger/doc_methods/parse_params.rb +12 -5
  19. data/lib/grape-swagger/doc_methods/path_string.rb +1 -1
  20. data/lib/grape-swagger/doc_methods/status_codes.rb +3 -1
  21. data/lib/grape-swagger/doc_methods/tag_name_description.rb +1 -1
  22. data/lib/grape-swagger/endpoint.rb +33 -46
  23. data/lib/grape-swagger/grape/route.rb +16 -0
  24. data/lib/grape-swagger/version.rb +1 -1
  25. data/spec/issues/403_versions_spec.rb +158 -0
  26. data/spec/lib/data_type_spec.rb +9 -10
  27. data/spec/lib/endpoint_spec.rb +1 -2
  28. data/spec/lib/extensions_spec.rb +44 -40
  29. data/spec/lib/move_params_spec.rb +113 -93
  30. data/spec/lib/operation_id_spec.rb +42 -12
  31. data/spec/lib/optional_object_spec.rb +3 -4
  32. data/spec/lib/path_string_spec.rb +2 -2
  33. data/spec/lib/produces_consumes_spec.rb +64 -53
  34. data/spec/markdown/redcarpet_adapter_spec.rb +1 -1
  35. data/spec/spec_helper.rb +1 -1
  36. data/spec/support/api_swagger_v2_result.rb +122 -128
  37. data/spec/support/namespace_tags.rb +17 -19
  38. data/spec/support/the_api_entities.rb +1 -3
  39. data/spec/support/the_paths_definitions.rb +95 -85
  40. data/spec/swagger_v2/api_swagger_v2_definitions-models_spec.rb +1 -1
  41. data/spec/swagger_v2/api_swagger_v2_detail_spec.rb +19 -19
  42. data/spec/swagger_v2/api_swagger_v2_extensions_spec.rb +21 -21
  43. data/spec/swagger_v2/api_swagger_v2_format-content_type_spec.rb +34 -32
  44. data/spec/swagger_v2/api_swagger_v2_global_configuration_spec.rb +5 -7
  45. data/spec/swagger_v2/api_swagger_v2_headers_spec.rb +19 -18
  46. data/spec/swagger_v2/api_swagger_v2_hide_documentation_path_spec.rb +9 -10
  47. data/spec/swagger_v2/api_swagger_v2_mounted_spec.rb +21 -24
  48. data/spec/swagger_v2/api_swagger_v2_param_type_body_nested_spec.rb +90 -92
  49. data/spec/swagger_v2/api_swagger_v2_param_type_body_spec.rb +54 -54
  50. data/spec/swagger_v2/api_swagger_v2_param_type_spec.rb +65 -57
  51. data/spec/swagger_v2/api_swagger_v2_request_params_fix_spec.rb +17 -14
  52. data/spec/swagger_v2/api_swagger_v2_response_spec.rb +79 -123
  53. data/spec/swagger_v2/api_swagger_v2_spec.rb +33 -34
  54. data/spec/swagger_v2/api_swagger_v2_type-format_spec.rb +32 -36
  55. data/spec/swagger_v2/boolean_params_spec.rb +1 -1
  56. data/spec/swagger_v2/default_api_spec.rb +26 -29
  57. data/spec/swagger_v2/description_not_initialized.rb +3 -3
  58. data/spec/swagger_v2/float_api_spec.rb +1 -1
  59. data/spec/swagger_v2/form_params_spec.rb +4 -4
  60. data/spec/swagger_v2/hide_api_spec.rb +48 -51
  61. data/spec/swagger_v2/host.rb +1 -1
  62. data/spec/swagger_v2/mounted_target_class_spec.rb +31 -33
  63. data/spec/swagger_v2/namespace_tags_prefix_spec.rb +23 -21
  64. data/spec/swagger_v2/namespace_tags_spec.rb +23 -20
  65. data/spec/swagger_v2/param_type_spec.rb +5 -6
  66. data/spec/swagger_v2/param_values_spec.rb +31 -37
  67. data/spec/swagger_v2/params_array_spec.rb +17 -15
  68. data/spec/swagger_v2/params_hash_spec.rb +17 -15
  69. data/spec/swagger_v2/params_nested_spec.rb +12 -10
  70. data/spec/swagger_v2/reference_entity.rb +9 -9
  71. data/spec/swagger_v2/response_model_spec.rb +58 -62
  72. data/spec/swagger_v2/simple_mounted_api_spec.rb +179 -147
  73. metadata +5 -10
  74. data/spec/params_entity_spec.rb +0 -49
@@ -10,46 +10,54 @@ describe 'a simple mounted api' do
10
10
  end
11
11
 
12
12
  desc 'This gets something.',
13
- notes: '_test_'
13
+ notes: '_test_'
14
14
 
15
15
  get '/simple' do
16
16
  { bla: 'something' }
17
17
  end
18
18
 
19
19
  desc 'This gets something for URL using - separator.',
20
- notes: '_test_'
20
+ notes: '_test_'
21
21
 
22
22
  get '/simple-test' do
23
23
  { bla: 'something' }
24
24
  end
25
25
 
26
+ head '/simple-head-test' do
27
+ status 200
28
+ end
29
+
30
+ options '/simple-options-test' do
31
+ status 200
32
+ end
33
+
26
34
  desc 'this gets something else',
27
- headers: {
28
- 'XAuthToken' => { description: 'A required header.', required: true },
29
- 'XOtherHeader' => { description: 'An optional header.', required: false }
30
- },
31
- http_codes: [
32
- { code: 403, message: 'invalid pony' },
33
- { code: 405, message: 'no ponies left!' }
34
- ]
35
+ headers: {
36
+ 'XAuthToken' => { description: 'A required header.', required: true },
37
+ 'XOtherHeader' => { description: 'An optional header.', required: false }
38
+ },
39
+ http_codes: [
40
+ { code: 403, message: 'invalid pony' },
41
+ { code: 405, message: 'no ponies left!' }
42
+ ]
35
43
 
36
44
  get '/simple_with_headers' do
37
45
  { bla: 'something_else' }
38
46
  end
39
47
 
40
48
  desc 'this takes an array of parameters',
41
- params: {
42
- 'items[]' => { description: 'array of items', is_array: true }
43
- }
49
+ params: {
50
+ 'items[]' => { description: 'array of items', is_array: true }
51
+ }
44
52
 
45
53
  post '/items' do
46
54
  {}
47
55
  end
48
56
 
49
57
  desc 'this uses a custom parameter',
50
- params: {
51
- 'custom' => { type: CustomType, description: 'array of items', is_array: true }
52
- }
58
+ params: {
59
+ 'custom' => { type: CustomType, description: 'array of items', is_array: true }
60
+ }
53
61
 
54
62
  get '/custom' do
55
63
  {}
@@ -66,78 +74,88 @@ describe 'a simple mounted api' do
66
74
  SimpleApi
67
75
  end
68
76
 
69
- describe "retrieves swagger-documentation on /swagger_doc" do
77
+ describe 'retrieves swagger-documentation on /swagger_doc' do
70
78
  subject do
71
79
  get '/swagger_doc.json'
72
80
  JSON.parse(last_response.body)
73
81
  end
74
82
 
75
83
  specify do
76
- expect(subject).to eq({
77
- "info"=>{"title"=>"API title", "version"=>"v1"},
78
- "swagger"=>"2.0",
79
- "produces"=>["application/xml", "application/json", "application/octet-stream", "text/plain"],
80
- "host"=>"example.org",
81
- "tags" => [{"name"=>"simple", "description"=>"Operations about simples"}, {"name"=>"simple-test", "description"=>"Operations about simple-tests"}, {"name"=>"simple_with_headers", "description"=>"Operations about simple_with_headers"}, {"name"=>"items", "description"=>"Operations about items"}, {"name"=>"custom", "description"=>"Operations about customs"}],
82
- "paths"=>{
83
- "/simple"=>{
84
- "get"=>{
85
- "description"=>"This gets something.",
86
- "produces"=>["application/json"],
87
- "tags"=>["simple"],
88
- "operationId"=>"getSimple",
89
- "responses"=>{"200"=>{"description"=>"This gets something."}}}},
90
- "/simple-test"=>{
91
- "get"=>{
92
- "description"=>"This gets something for URL using - separator.",
93
- "produces"=>["application/json"],
94
- "tags"=>["simple-test"],
95
- "operationId"=>"getSimpleTest",
96
- "responses"=>{"200"=>{"description"=>"This gets something for URL using - separator."}}}},
97
- "/simple_with_headers"=>{
98
- "get"=>{
99
- "description"=>"this gets something else",
100
- "produces"=>["application/json"],
101
- "parameters"=>[
102
- {"in"=>"header", "name"=>"XAuthToken", "description"=>"A required header.", "type"=>"string", "required"=>true},
103
- {"in"=>"header", "name"=>"XOtherHeader", "description"=>"An optional header.", "type"=>"string", "required"=>false}],
104
- "tags"=>["simple_with_headers"],
105
- "operationId"=>"getSimpleWithHeaders",
106
- "responses"=>{
107
- "200"=>{"description"=>"this gets something else"},
108
- "403"=>{"description"=>"invalid pony"},
109
- "405"=>{"description"=>"no ponies left!"}}
110
- }},
111
- "/items"=>{
112
- "post"=>{
113
- "description"=>"this takes an array of parameters",
114
- "produces"=>["application/json"],
115
- "consumes"=>["application/json"],
116
- "parameters"=>[{"in"=>"formData", "name"=>"items[]", "description"=>"array of items", "required"=>false, "type"=>"array", "items"=>{"type"=>"string"}}],
117
- "tags"=>["items"],
118
- "operationId"=>"postItems",
119
- "responses"=>{"201"=>{"description"=>"this takes an array of parameters", "schema"=>{"$ref"=>"#/definitions/Item"}}}
120
- }},
121
- "/custom"=>{
122
- "get"=>{
123
- "description"=>"this uses a custom parameter",
124
- "produces"=>["application/json"],
125
- "parameters"=>[{"in"=>"formData", "name"=>"custom", "description"=>"array of items", "required"=>false, "type"=>"array", "items"=>{"type"=>"CustomType"}}],
126
- "tags"=>["custom"],
127
- "operationId"=>"getCustom",
128
- "responses"=>{"200"=>{"description"=>"this uses a custom parameter", "schema"=>{"$ref"=>"#/definitions/Custom"}}}}
129
- }},
130
- "definitions"=>{
131
- "Item"=>{
132
- "type"=>"object",
133
- "properties"=>{"items[]"=>{"type"=>"string"}},
134
- "description"=>"this takes an array of parameters"
84
+ expect(subject).to eq(
85
+ 'info' => {
86
+ 'title' => 'API title', 'version' => '0.0.1'
135
87
  },
136
- "Custom"=>{
137
- "type"=>"object",
138
- "properties"=>{"custom"=>{"type"=>"CustomType"}},
139
- "description"=>"this uses a custom parameter"
140
- }}})
88
+ 'swagger' => '2.0',
89
+ 'produces' => ['application/xml', 'application/json', 'application/octet-stream', 'text/plain'],
90
+ 'host' => 'example.org',
91
+ 'tags' => [
92
+ { 'name' => 'simple', 'description' => 'Operations about simples' },
93
+ { 'name' => 'simple-test', 'description' => 'Operations about simple-tests' },
94
+ { 'name' => 'simple-head-test', 'description' => 'Operations about simple-head-tests' },
95
+ { 'name' => 'simple-options-test', 'description' => 'Operations about simple-options-tests' },
96
+ { 'name' => 'simple_with_headers', 'description' => 'Operations about simple_with_headers' },
97
+ { 'name' => 'items', 'description' => 'Operations about items' },
98
+ { 'name' => 'custom', 'description' => 'Operations about customs' }],
99
+ 'paths' => {
100
+ '/simple' => {
101
+ 'get' => {
102
+ 'description' => 'This gets something.',
103
+ 'produces' => ['application/json'],
104
+ 'tags' => ['simple'],
105
+ 'operationId' => 'getSimple',
106
+ 'responses' => { '200' => { 'description' => 'This gets something.' } } } },
107
+ '/simple-test' => {
108
+ 'get' => {
109
+ 'description' => 'This gets something for URL using - separator.',
110
+ 'produces' => ['application/json'],
111
+ 'tags' => ['simple-test'],
112
+ 'operationId' => 'getSimpleTest',
113
+ 'responses' => { '200' => { 'description' => 'This gets something for URL using - separator.' } } } },
114
+ '/simple-head-test' => {
115
+ 'head' => {
116
+ 'produces' => ['application/json'],
117
+ 'responses' => { '200' => { 'description' => 'head SimpleHeadTest' } },
118
+ 'tags' => ['simple-head-test'],
119
+ 'operationId' => 'headSimpleHeadTest' } },
120
+ '/simple-options-test' => {
121
+ 'options' => {
122
+ 'produces' => ['application/json'],
123
+ 'responses' => { '200' => { 'description' => 'option SimpleOptionsTest' } },
124
+ 'tags' => ['simple-options-test'],
125
+ 'operationId' => 'optionsSimpleOptionsTest' } },
126
+ '/simple_with_headers' => {
127
+ 'get' => {
128
+ 'description' => 'this gets something else',
129
+ 'produces' => ['application/json'],
130
+ 'parameters' => [
131
+ { 'in' => 'header', 'name' => 'XAuthToken', 'description' => 'A required header.', 'type' => 'string', 'required' => true },
132
+ { 'in' => 'header', 'name' => 'XOtherHeader', 'description' => 'An optional header.', 'type' => 'string', 'required' => false }],
133
+ 'tags' => ['simple_with_headers'],
134
+ 'operationId' => 'getSimpleWithHeaders',
135
+ 'responses' => {
136
+ '200' => { 'description' => 'this gets something else' },
137
+ '403' => { 'description' => 'invalid pony' },
138
+ '405' => { 'description' => 'no ponies left!' } }
139
+ } },
140
+ '/items' => {
141
+ 'post' => {
142
+ 'description' => 'this takes an array of parameters',
143
+ 'produces' => ['application/json'],
144
+ 'consumes' => ['application/json'],
145
+ 'parameters' => [{ 'in' => 'formData', 'name' => 'items[]', 'description' => 'array of items', 'required' => false, 'type' => 'array', 'items' => { 'type' => 'string' } }],
146
+ 'tags' => ['items'],
147
+ 'operationId' => 'postItems',
148
+ 'responses' => { '201' => { 'description' => 'this takes an array of parameters' } }
149
+ } },
150
+ '/custom' => {
151
+ 'get' => {
152
+ 'description' => 'this uses a custom parameter',
153
+ 'produces' => ['application/json'],
154
+ 'parameters' => [{ 'in' => 'formData', 'name' => 'custom', 'description' => 'array of items', 'required' => false, 'type' => 'array', 'items' => { 'type' => 'CustomType' } }],
155
+ 'tags' => ['custom'],
156
+ 'operationId' => 'getCustom',
157
+ 'responses' => { '200' => { 'description' => 'this uses a custom parameter' } } }
158
+ } })
141
159
  end
142
160
  end
143
161
 
@@ -148,21 +166,28 @@ describe 'a simple mounted api' do
148
166
  end
149
167
 
150
168
  specify do
151
- expect(subject).to eq({
152
- "info"=>{"title"=>"API title", "version"=>"v1"},
153
- "swagger"=>"2.0",
154
- "produces"=>["application/xml", "application/json", "application/octet-stream", "text/plain"],
155
- "host"=>"example.org",
156
- "tags" => [{"name"=>"simple", "description"=>"Operations about simples"}, {"name"=>"simple-test", "description"=>"Operations about simple-tests"}, {"name"=>"simple_with_headers", "description"=>"Operations about simple_with_headers"}, {"name"=>"items", "description"=>"Operations about items"}, {"name"=>"custom", "description"=>"Operations about customs"}],
157
- "paths"=>{
158
- "/simple"=>{
159
- "get"=>{
160
- "description"=>"This gets something.",
161
- "produces"=>["application/json"],
162
- "tags"=>["simple"],
163
- "operationId"=>"getSimple",
164
- "responses"=>{"200"=>{"description"=>"This gets something."}}}}
165
- }})
169
+ expect(subject).to eq(
170
+ 'info' => { 'title' => 'API title', 'version' => '0.0.1' },
171
+ 'swagger' => '2.0',
172
+ 'produces' => ['application/xml', 'application/json', 'application/octet-stream', 'text/plain'],
173
+ 'host' => 'example.org',
174
+ 'tags' => [
175
+ { 'name' => 'simple', 'description' => 'Operations about simples' },
176
+ { 'name' => 'simple-test', 'description' => 'Operations about simple-tests' },
177
+ { 'name' => 'simple-head-test', 'description' => 'Operations about simple-head-tests' },
178
+ { 'name' => 'simple-options-test', 'description' => 'Operations about simple-options-tests' },
179
+ { 'name' => 'simple_with_headers', 'description' => 'Operations about simple_with_headers' },
180
+ { 'name' => 'items', 'description' => 'Operations about items' },
181
+ { 'name' => 'custom', 'description' => 'Operations about customs' }],
182
+ 'paths' => {
183
+ '/simple' => {
184
+ 'get' => {
185
+ 'description' => 'This gets something.',
186
+ 'produces' => ['application/json'],
187
+ 'tags' => ['simple'],
188
+ 'operationId' => 'getSimple',
189
+ 'responses' => { '200' => { 'description' => 'This gets something.' } } } }
190
+ })
166
191
  end
167
192
  end
168
193
 
@@ -174,21 +199,28 @@ describe 'a simple mounted api' do
174
199
  end
175
200
 
176
201
  specify do
177
- expect(subject).to eq({
178
- "info"=>{"title"=>"API title", "version"=>"v1"},
179
- "swagger"=>"2.0",
180
- "produces"=>["application/xml", "application/json", "application/octet-stream", "text/plain"],
181
- "host"=>"example.org",
182
- "tags" => [{"name"=>"simple", "description"=>"Operations about simples"}, {"name"=>"simple-test", "description"=>"Operations about simple-tests"}, {"name"=>"simple_with_headers", "description"=>"Operations about simple_with_headers"}, {"name"=>"items", "description"=>"Operations about items"}, {"name"=>"custom", "description"=>"Operations about customs"}],
183
- "paths"=>{
184
- "/simple-test"=>{
185
- "get"=>{
186
- "description"=>"This gets something for URL using - separator.",
187
- "produces"=>["application/json"],
188
- "tags"=>["simple-test"],
189
- "operationId"=>"getSimpleTest",
190
- "responses"=>{"200"=>{"description"=>"This gets something for URL using - separator."}}}}
191
- }})
202
+ expect(subject).to eq(
203
+ 'info' => { 'title' => 'API title', 'version' => '0.0.1' },
204
+ 'swagger' => '2.0',
205
+ 'produces' => ['application/xml', 'application/json', 'application/octet-stream', 'text/plain'],
206
+ 'host' => 'example.org',
207
+ 'tags' => [
208
+ { 'name' => 'simple', 'description' => 'Operations about simples' },
209
+ { 'name' => 'simple-test', 'description' => 'Operations about simple-tests' },
210
+ { 'name' => 'simple-head-test', 'description' => 'Operations about simple-head-tests' },
211
+ { 'name' => 'simple-options-test', 'description' => 'Operations about simple-options-tests' },
212
+ { 'name' => 'simple_with_headers', 'description' => 'Operations about simple_with_headers' },
213
+ { 'name' => 'items', 'description' => 'Operations about items' },
214
+ { 'name' => 'custom', 'description' => 'Operations about customs' }],
215
+ 'paths' => {
216
+ '/simple-test' => {
217
+ 'get' => {
218
+ 'description' => 'This gets something for URL using - separator.',
219
+ 'produces' => ['application/json'],
220
+ 'tags' => ['simple-test'],
221
+ 'operationId' => 'getSimpleTest',
222
+ 'responses' => { '200' => { 'description' => 'This gets something for URL using - separator.' } } } }
223
+ })
192
224
  end
193
225
  end
194
226
 
@@ -199,21 +231,21 @@ describe 'a simple mounted api' do
199
231
  end
200
232
 
201
233
  specify do
202
- expect(subject['paths']).to eq({
203
- "/simple_with_headers"=>{
204
- "get"=>{
205
- "description"=>"this gets something else",
206
- "produces"=>["application/json"],
207
- "parameters"=>[
208
- {"in"=>"header", "name"=>"XAuthToken", "description"=>"A required header.", "type"=>"string", "required"=>true},
209
- {"in"=>"header", "name"=>"XOtherHeader", "description"=>"An optional header.", "type"=>"string", "required"=>false}],
210
- "tags"=>["simple_with_headers"],
211
- "operationId"=>"getSimpleWithHeaders",
212
- "responses"=>{
213
- "200"=>{"description"=>"this gets something else"},
214
- "403"=>{"description"=>"invalid pony"},
215
- "405"=>{"description"=>"no ponies left!"}}}
216
- }})
234
+ expect(subject['paths']).to eq(
235
+ '/simple_with_headers' => {
236
+ 'get' => {
237
+ 'description' => 'this gets something else',
238
+ 'produces' => ['application/json'],
239
+ 'parameters' => [
240
+ { 'in' => 'header', 'name' => 'XAuthToken', 'description' => 'A required header.', 'type' => 'string', 'required' => true },
241
+ { 'in' => 'header', 'name' => 'XOtherHeader', 'description' => 'An optional header.', 'type' => 'string', 'required' => false }],
242
+ 'tags' => ['simple_with_headers'],
243
+ 'operationId' => 'getSimpleWithHeaders',
244
+ 'responses' => {
245
+ '200' => { 'description' => 'this gets something else' },
246
+ '403' => { 'description' => 'invalid pony' },
247
+ '405' => { 'description' => 'no ponies left!' } } }
248
+ })
217
249
  end
218
250
  end
219
251
 
@@ -224,17 +256,17 @@ describe 'a simple mounted api' do
224
256
  end
225
257
 
226
258
  specify do
227
- expect(subject['paths']).to eq({
228
- "/items"=>{
229
- "post"=>{
230
- "description"=>"this takes an array of parameters",
231
- "produces"=>["application/json"],
232
- "consumes"=>["application/json"],
233
- "parameters"=>[{"in"=>"formData", "name"=>"items[]", "description"=>"array of items", "required"=>false, "type"=>"array", "items"=>{"type"=>"string"}}],
234
- "tags"=>["items"],
235
- "operationId"=>"postItems",
236
- "responses"=>{"201"=>{"description"=>"this takes an array of parameters", "schema"=>{"$ref"=>"#/definitions/Item"}}}}
237
- }})
259
+ expect(subject['paths']).to eq(
260
+ '/items' => {
261
+ 'post' => {
262
+ 'description' => 'this takes an array of parameters',
263
+ 'produces' => ['application/json'],
264
+ 'consumes' => ['application/json'],
265
+ 'parameters' => [{ 'in' => 'formData', 'name' => 'items[]', 'description' => 'array of items', 'required' => false, 'type' => 'array', 'items' => { 'type' => 'string' } }],
266
+ 'tags' => ['items'],
267
+ 'operationId' => 'postItems',
268
+ 'responses' => { '201' => { 'description' => 'this takes an array of parameters' } } }
269
+ })
238
270
  end
239
271
  end
240
272
 
@@ -245,16 +277,16 @@ describe 'a simple mounted api' do
245
277
  end
246
278
 
247
279
  specify do
248
- expect(subject['paths']).to eq({
249
- "/custom"=>{
250
- "get"=>{
251
- "description"=>"this uses a custom parameter",
252
- "produces"=>["application/json"],
253
- "parameters"=>[{"in"=>"formData", "name"=>"custom", "description"=>"array of items", "required"=>false, "type"=>"array", "items"=>{"type"=>"CustomType"}}],
254
- "tags"=>["custom"],
255
- "operationId"=>"getCustom",
256
- "responses"=>{"200"=>{"description"=>"this uses a custom parameter", "schema"=>{"$ref"=>"#/definitions/Custom"}}}}
257
- }})
280
+ expect(subject['paths']).to eq(
281
+ '/custom' => {
282
+ 'get' => {
283
+ 'description' => 'this uses a custom parameter',
284
+ 'produces' => ['application/json'],
285
+ 'parameters' => [{ 'in' => 'formData', 'name' => 'custom', 'description' => 'array of items', 'required' => false, 'type' => 'array', 'items' => { 'type' => 'CustomType' } }],
286
+ 'tags' => ['custom'],
287
+ 'operationId' => 'getCustom',
288
+ 'responses' => { '200' => { 'description' => 'this uses a custom parameter' } } }
289
+ })
258
290
  end
259
291
  end
260
292
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grape-swagger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.20.2
4
+ version: 0.20.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Vandecasteele
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-22 00:00:00.000000000 Z
11
+ date: 2016-05-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: grape
@@ -17,9 +17,6 @@ dependencies:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 0.12.0
20
- - - "<="
21
- - !ruby/object:Gem::Version
22
- version: 0.14.0
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
@@ -27,9 +24,6 @@ dependencies:
27
24
  - - ">="
28
25
  - !ruby/object:Gem::Version
29
26
  version: 0.12.0
30
- - - "<="
31
- - !ruby/object:Gem::Version
32
- version: 0.14.0
33
27
  - !ruby/object:Gem::Dependency
34
28
  name: grape-entity
35
29
  requirement: !ruby/object:Gem::Requirement
@@ -284,9 +278,11 @@ files:
284
278
  - lib/grape-swagger/doc_methods/tag_name_description.rb
285
279
  - lib/grape-swagger/endpoint.rb
286
280
  - lib/grape-swagger/errors.rb
281
+ - lib/grape-swagger/grape/route.rb
287
282
  - lib/grape-swagger/markdown/kramdown_adapter.rb
288
283
  - lib/grape-swagger/markdown/redcarpet_adapter.rb
289
284
  - lib/grape-swagger/version.rb
285
+ - spec/issues/403_versions_spec.rb
290
286
  - spec/lib/data_type_spec.rb
291
287
  - spec/lib/endpoint_spec.rb
292
288
  - spec/lib/extensions_spec.rb
@@ -297,7 +293,6 @@ files:
297
293
  - spec/lib/produces_consumes_spec.rb
298
294
  - spec/markdown/kramdown_adapter_spec.rb
299
295
  - spec/markdown/redcarpet_adapter_spec.rb
300
- - spec/params_entity_spec.rb
301
296
  - spec/spec_helper.rb
302
297
  - spec/support/api_swagger_v2_result.rb
303
298
  - spec/support/grape_version.rb
@@ -366,6 +361,7 @@ specification_version: 4
366
361
  summary: A simple way to add auto generated documentation to your Grape API that can
367
362
  be displayed with Swagger.
368
363
  test_files:
364
+ - spec/issues/403_versions_spec.rb
369
365
  - spec/lib/data_type_spec.rb
370
366
  - spec/lib/endpoint_spec.rb
371
367
  - spec/lib/extensions_spec.rb
@@ -376,7 +372,6 @@ test_files:
376
372
  - spec/lib/produces_consumes_spec.rb
377
373
  - spec/markdown/kramdown_adapter_spec.rb
378
374
  - spec/markdown/redcarpet_adapter_spec.rb
379
- - spec/params_entity_spec.rb
380
375
  - spec/spec_helper.rb
381
376
  - spec/support/api_swagger_v2_result.rb
382
377
  - spec/support/grape_version.rb