grape-swagger 0.9.0 → 0.10.0

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.
@@ -30,6 +30,15 @@ describe 'Form Params' do
30
30
  {}
31
31
  end
32
32
 
33
+ params do
34
+ requires :id, type: Integer, desc: 'id of item'
35
+ requires :name, type: String, desc: 'name of item'
36
+ optional :conditions, type: Symbol, desc: 'conditions of item', values: [:one, :two]
37
+ end
38
+ post '/items/:id' do
39
+ {}
40
+ end
41
+
33
42
  add_swagger_documentation
34
43
  end
35
44
  end
@@ -46,5 +55,11 @@ describe 'Form Params' do
46
55
  expect(subject['apis'][1]['path']).to start_with '/items/{id}'
47
56
  expect(subject['apis'][1]['operations'][0]['method']).to eq 'PUT'
48
57
  expect(subject['apis'][1]['operations'][1]['method']).to eq 'PATCH'
58
+ expect(subject['apis'][1]['operations'][2]['method']).to eq 'POST'
59
+ end
60
+
61
+ it 'treats Symbol parameter as form param' do
62
+ expect(subject['apis'][1]['operations'][2]['parameters'][2]['paramType']).to eq 'form'
63
+ expect(subject['apis'][1]['operations'][2]['parameters'][2]['type']).to eq 'string'
49
64
  end
50
65
  end
@@ -1,7 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe 'helpers' do
4
-
5
4
  before :all do
6
5
  class HelperTestAPI < Grape::API
7
6
  end
@@ -59,7 +58,25 @@ describe 'helpers' do
59
58
  allowMultiple: false
60
59
  }
61
60
  ]
61
+ end
62
62
 
63
+ it 'parses symbol param as string' do
64
+ params = {
65
+ animal: { type: 'Symbol', desc: 'An animal you like', required: true, values: [:cat, :dog] }
66
+ }
67
+ path = '/coolness'
68
+ method = 'POST'
69
+ expect(subject.parse_params(params, path, method)).to eq [
70
+ {
71
+ paramType: 'form',
72
+ name: :animal,
73
+ description: 'An animal you like',
74
+ type: 'string',
75
+ required: true,
76
+ allowMultiple: false,
77
+ enum: [:cat, :dog]
78
+ }
79
+ ]
63
80
  end
64
81
 
65
82
  context 'custom type' do
@@ -78,7 +95,6 @@ describe 'helpers' do
78
95
  ]
79
96
  end
80
97
  end
81
-
82
98
  end
83
99
 
84
100
  context 'parsing the path' do
@@ -120,5 +136,4 @@ describe 'helpers' do
120
136
  ]
121
137
  end
122
138
  end
123
-
124
139
  end
@@ -14,6 +14,13 @@ describe 'a hide mounted api' do
14
14
  get '/hide' do
15
15
  { foo: 'bar' }
16
16
  end
17
+
18
+ desc 'Lazily show endpoint',
19
+ hidden: -> { false }
20
+
21
+ get '/lazy' do
22
+ { foo: 'bar' }
23
+ end
17
24
  end
18
25
 
19
26
  class HideApi < Grape::API
@@ -39,6 +46,7 @@ describe 'a hide mounted api' do
39
46
  'produces' => Grape::ContentTypes::CONTENT_TYPES.values.uniq,
40
47
  'apis' => [
41
48
  { 'path' => '/simple.{format}', 'description' => 'Operations about simples' },
49
+ { 'path' => '/lazy.{format}', 'description' => 'Operations about lazies' },
42
50
  { 'path' => '/swagger_doc.{format}', 'description' => 'Operations about swagger_docs' }
43
51
  ]
44
52
  )
@@ -59,6 +67,13 @@ describe 'a hide mounted api with same namespace' do
59
67
  get '/simple/hide' do
60
68
  { foo: 'bar' }
61
69
  end
70
+
71
+ desc 'Lazily hide endpoint',
72
+ hidden: -> { true }
73
+
74
+ get '/simple/lazy' do
75
+ { foo: 'bar' }
76
+ end
62
77
  end
63
78
 
64
79
  class HideNamespaceApi < Grape::API
@@ -1,7 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe GrapeSwagger::Markdown::KramdownAdapter do
4
-
5
4
  context 'initialization' do
6
5
  it 'uses GFM as default input and disable coderay' do
7
6
  adapter = GrapeSwagger::Markdown::KramdownAdapter.new
@@ -1,7 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe GrapeSwagger::Markdown::RedcarpetAdapter, unless: RUBY_PLATFORM.eql?('java') do
4
-
5
4
  context 'initialization' do
6
5
  context 'initialization' do
7
6
  it 'uses fenced_code_blocks, auto_links and rouge as default.' do
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Mutually exclusive group params' do
4
+ def app
5
+ Class.new(Grape::API) do
6
+ format :json
7
+
8
+ params do
9
+ requires :required_group, type: Hash do
10
+ group :param_group_1, type: Hash do
11
+ requires :param_1, type: String
12
+ end
13
+ optional :param_group_2, type: Array do
14
+ requires :param_2, type: String
15
+ end
16
+ mutually_exclusive :param_group_1, :param_group_2
17
+ end
18
+ end
19
+ post '/groups' do
20
+ {}
21
+ end
22
+
23
+ add_swagger_documentation
24
+ end
25
+ end
26
+
27
+ it 'marks the nested required params in a group as optional if the group is in a mutually_exclusive set' do
28
+ get '/swagger_doc/groups'
29
+
30
+ body = JSON.parse last_response.body
31
+ parameters = body['apis'].first['operations'].first['parameters']
32
+ expect(parameters).to eq [
33
+ { 'paramType' => 'form', 'name' => 'required_group[param_group_1][param_1]', 'description' => nil, 'type' => 'string', 'required' => false, 'allowMultiple' => false },
34
+ { 'paramType' => 'form', 'name' => 'required_group[param_group_2][][param_2]', 'description' => nil, 'type' => 'string', 'required' => true, 'allowMultiple' => false }]
35
+ end
36
+ end
@@ -3,7 +3,6 @@ require 'spec_helper'
3
3
  describe 'options: ' do
4
4
  context 'overriding the basepath' do
5
5
  before :all do
6
-
7
6
  class BasePathMountedApi < Grape::API
8
7
  desc 'This gets something.'
9
8
  get '/something' do
@@ -17,7 +16,6 @@ describe 'options: ' do
17
16
  mount BasePathMountedApi
18
17
  add_swagger_documentation base_path: NON_DEFAULT_BASE_PATH
19
18
  end
20
-
21
19
  end
22
20
 
23
21
  def app
@@ -254,7 +252,6 @@ describe 'options: ' do
254
252
  mount HideDocumentationPathPrefixedMountedApi
255
253
  add_swagger_documentation hide_documentation_path: true
256
254
  end
257
-
258
255
  end
259
256
 
260
257
  def app
@@ -286,7 +283,6 @@ describe 'options: ' do
286
283
  }]
287
284
  )
288
285
  end
289
-
290
286
  end
291
287
 
292
288
  context 'overriding hiding the documentation paths in prefixed and versioned API' do
@@ -338,7 +334,6 @@ describe 'options: ' do
338
334
  }]
339
335
  )
340
336
  end
341
-
342
337
  end
343
338
 
344
339
  context 'overriding the mount-path' do
@@ -0,0 +1,49 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Range Params' do
4
+ def app
5
+ Class.new(Grape::API) do
6
+ format :json
7
+
8
+ params do
9
+ requires :letter, type: String, values: 'a'..'z'
10
+ end
11
+ post :letter do
12
+ end
13
+
14
+ params do
15
+ requires :number, type: Integer, values: -5..5
16
+ end
17
+ post :integer do
18
+ end
19
+
20
+ add_swagger_documentation
21
+ end
22
+ end
23
+
24
+ subject(:letter) do
25
+ get '/swagger_doc/letter'
26
+ expect(last_response.status).to eq 200
27
+ body = JSON.parse last_response.body
28
+ body['apis'].first['operations'].first['parameters']
29
+ end
30
+
31
+ it 'has letter range values' do
32
+ expect(letter).to eq [
33
+ { 'paramType' => 'form', 'name' => 'letter', 'description' => nil, 'type' => 'string', 'required' => true, 'allowMultiple' => false, 'enum' => ('a'..'z').to_a }
34
+ ]
35
+ end
36
+
37
+ subject(:number) do
38
+ get '/swagger_doc/integer'
39
+ expect(last_response.status).to eq 200
40
+ body = JSON.parse last_response.body
41
+ body['apis'].first['operations'].first['parameters']
42
+ end
43
+
44
+ it 'has number range values' do
45
+ expect(number).to eq [
46
+ { 'paramType' => 'form', 'name' => 'number', 'description' => nil, 'type' => 'integer', 'required' => true, 'allowMultiple' => false, 'format' => 'int32', 'enum' => (-5..5).to_a }
47
+ ]
48
+ end
49
+ end
@@ -11,6 +11,9 @@ describe 'responseModel' do
11
11
  class Something < Grape::Entity
12
12
  expose :text, documentation: { type: 'string', desc: 'Content of something.' }
13
13
  expose :kind, using: Kind, documentation: { type: 'MyAPI::Kind', desc: 'The kind of this something.' }
14
+ expose :kind2, using: Kind, documentation: { desc: 'Secondary kind.' }
15
+ expose :kind3, using: 'MyAPI::Entities::Kind', documentation: { desc: 'Tertiary kind.' }
16
+ expose :tags, using: 'MyAPI::Entities::Tag', documentation: { desc: 'Tags.', is_array: true }
14
17
  expose :relation, using: 'MyAPI::Entities::Relation', documentation: { type: 'MyAPI::Relation', desc: 'A related model.' }
15
18
  end
16
19
 
@@ -18,6 +21,10 @@ describe 'responseModel' do
18
21
  expose :name, documentation: { type: 'string', desc: 'Name' }
19
22
  end
20
23
 
24
+ class Tag < Grape::Entity
25
+ expose :name, documentation: { type: 'string', desc: 'Name' }
26
+ end
27
+
21
28
  class Error < Grape::Entity
22
29
  expose :code, documentation: { type: 'string', desc: 'Error code' }
23
30
  expose :message, documentation: { type: 'string', desc: 'Error message' }
@@ -88,6 +95,9 @@ describe 'responseModel' do
88
95
  'properties' => {
89
96
  'text' => { 'type' => 'string', 'description' => 'Content of something.' },
90
97
  'kind' => { '$ref' => 'MyAPI::Kind', 'description' => 'The kind of this something.' },
98
+ 'kind2' => { '$ref' => 'MyAPI::Kind', 'description' => 'Secondary kind.' },
99
+ 'kind3' => { '$ref' => 'MyAPI::Kind', 'description' => 'Tertiary kind.' },
100
+ 'tags' => { 'items' => { '$ref' => 'MyAPI::Tag' }, 'type' => 'array', 'description' => 'Tags.' },
91
101
  'relation' => { '$ref' => 'MyAPI::Relation', 'description' => 'A related model.' }
92
102
  }
93
103
  )
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.9.0
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Vandecasteele
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-19 00:00:00.000000000 Z
11
+ date: 2015-03-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: grape
@@ -230,8 +230,12 @@ files:
230
230
  - spec/api_models_spec.rb
231
231
  - spec/api_paths_spec.rb
232
232
  - spec/api_root_spec.rb
233
+ - spec/api_with_path_versioning_spec.rb
234
+ - spec/api_with_standalone_namespace_spec.rb
235
+ - spec/array_params_spec.rb
233
236
  - spec/boolean_params_spec.rb
234
237
  - spec/default_api_spec.rb
238
+ - spec/float_api_spec.rb
235
239
  - spec/form_params_spec.rb
236
240
  - spec/grape-swagger_helper_spec.rb
237
241
  - spec/grape-swagger_spec.rb
@@ -241,8 +245,10 @@ files:
241
245
  - spec/markdown/kramdown_adapter_spec.rb
242
246
  - spec/markdown/markdown_spec.rb
243
247
  - spec/markdown/redcarpet_adapter_spec.rb
248
+ - spec/mutually_exclusive_spec.rb
244
249
  - spec/namespaced_api_spec.rb
245
250
  - spec/non_default_api_spec.rb
251
+ - spec/range_values_spec.rb
246
252
  - spec/response_model_spec.rb
247
253
  - spec/simple_mounted_api_spec.rb
248
254
  - spec/spec_helper.rb
@@ -278,8 +284,12 @@ test_files:
278
284
  - spec/api_models_spec.rb
279
285
  - spec/api_paths_spec.rb
280
286
  - spec/api_root_spec.rb
287
+ - spec/api_with_path_versioning_spec.rb
288
+ - spec/api_with_standalone_namespace_spec.rb
289
+ - spec/array_params_spec.rb
281
290
  - spec/boolean_params_spec.rb
282
291
  - spec/default_api_spec.rb
292
+ - spec/float_api_spec.rb
283
293
  - spec/form_params_spec.rb
284
294
  - spec/grape-swagger_helper_spec.rb
285
295
  - spec/grape-swagger_spec.rb
@@ -289,8 +299,10 @@ test_files:
289
299
  - spec/markdown/kramdown_adapter_spec.rb
290
300
  - spec/markdown/markdown_spec.rb
291
301
  - spec/markdown/redcarpet_adapter_spec.rb
302
+ - spec/mutually_exclusive_spec.rb
292
303
  - spec/namespaced_api_spec.rb
293
304
  - spec/non_default_api_spec.rb
305
+ - spec/range_values_spec.rb
294
306
  - spec/response_model_spec.rb
295
307
  - spec/simple_mounted_api_spec.rb
296
308
  - spec/spec_helper.rb