grape-swagger 0.20.2 → 0.20.3

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -0,0 +1,16 @@
1
+ # backwards compatibility for Grape < 0.16.0
2
+ module Grape
3
+ class Route
4
+ [:path, :prefix, :entity, :description, :settings, :params, :headers, :http_codes].each do |m|
5
+ define_method m do
6
+ send "route_#{m}"
7
+ end
8
+ end
9
+
10
+ def request_method
11
+ route_method
12
+ end
13
+
14
+ attr_reader :options
15
+ end
16
+ end if defined?(Grape::VERSION) && Gem::Version.new(::Grape::VERSION) < Gem::Version.new('0.16.0')
@@ -1,3 +1,3 @@
1
1
  module GrapeSwagger
2
- VERSION = '0.20.2'.freeze
2
+ VERSION = '0.20.3'.freeze
3
3
  end
@@ -0,0 +1,158 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe 'describing versions' do
5
+ describe 'nothings given' do
6
+ def app
7
+ Class.new(Grape::API) do
8
+ desc 'no versions given'
9
+ get '/nothings' do
10
+ { message: 'hello world …' }
11
+ end
12
+
13
+ add_swagger_documentation format: :json
14
+ end
15
+ end
16
+
17
+ subject do
18
+ get '/swagger_doc'
19
+ JSON.parse(last_response.body, symbolize_names: true)
20
+ end
21
+
22
+ specify do
23
+ expect(subject).to eql(
24
+ info: { title: 'API title', version: '0.0.1' },
25
+ swagger: '2.0',
26
+ produces: ['application/xml', 'application/json', 'application/octet-stream', 'text/plain'],
27
+ host: 'example.org',
28
+ tags: [{ name: 'nothings', description: 'Operations about nothings' }],
29
+ paths: {
30
+ :'/nothings' => {
31
+ get: {
32
+ description: 'no versions given',
33
+ produces: ['application/json'],
34
+ responses: {
35
+ :'200' => { description: 'no versions given' }
36
+ },
37
+ tags: ['nothings'],
38
+ operationId: 'getNothings'
39
+ } } })
40
+ end
41
+ end
42
+
43
+ describe 'API version given' do
44
+ def app
45
+ Class.new(Grape::API) do
46
+ version 'v2', using: :path
47
+ desc 'api versions given'
48
+ get '/api_version' do
49
+ { message: 'hello world …' }
50
+ end
51
+
52
+ add_swagger_documentation format: :json
53
+ end
54
+ end
55
+
56
+ subject do
57
+ get '/v2/swagger_doc'
58
+ JSON.parse(last_response.body, symbolize_names: true)
59
+ end
60
+
61
+ specify do
62
+ expect(subject).to eql(
63
+ info: { title: 'API title', version: '0.0.1' },
64
+ swagger: '2.0',
65
+ produces: ['application/xml', 'application/json', 'application/octet-stream', 'text/plain'],
66
+ host: 'example.org',
67
+ tags: [{ name: 'api_version', description: 'Operations about api_versions' }],
68
+ paths: {
69
+ :'/v2/api_version' => {
70
+ get: {
71
+ description: 'api versions given',
72
+ produces: ['application/json'],
73
+ responses: {
74
+ :'200' => { description: 'api versions given' }
75
+ },
76
+ tags: ['api_version'],
77
+ operationId: 'getV2ApiVersion'
78
+ } } })
79
+ end
80
+ end
81
+
82
+ describe 'DOC version given' do
83
+ def app
84
+ Class.new(Grape::API) do
85
+ desc 'doc versions given'
86
+ get '/doc_version' do
87
+ { message: 'hello world …' }
88
+ end
89
+
90
+ add_swagger_documentation doc_version: '0.0.2'
91
+ end
92
+ end
93
+
94
+ subject do
95
+ get '/swagger_doc'
96
+ JSON.parse(last_response.body, symbolize_names: true)
97
+ end
98
+
99
+ specify do
100
+ expect(subject).to eql(
101
+ info: { title: 'API title', version: '0.0.2' },
102
+ swagger: '2.0',
103
+ produces: ['application/xml', 'application/json', 'application/octet-stream', 'text/plain'],
104
+ host: 'example.org',
105
+ tags: [{ name: 'doc_version', description: 'Operations about doc_versions' }],
106
+ paths: {
107
+ :'/doc_version' => {
108
+ get: {
109
+ description: 'doc versions given',
110
+ produces: ['application/json'],
111
+ responses: {
112
+ :'200' => { description: 'doc versions given' }
113
+ },
114
+ tags: ['doc_version'],
115
+ operationId: 'getDocVersion'
116
+ } } })
117
+ end
118
+ end
119
+
120
+ describe 'both versions given' do
121
+ def app
122
+ Class.new(Grape::API) do
123
+ version :v2, using: :path
124
+ desc 'both versions given'
125
+ get '/both_versions' do
126
+ { message: 'hello world …' }
127
+ end
128
+
129
+ add_swagger_documentation doc_version: '0.0.2'
130
+ end
131
+ end
132
+
133
+ subject do
134
+ get '/v2/swagger_doc'
135
+ JSON.parse(last_response.body, symbolize_names: true)
136
+ end
137
+
138
+ specify do
139
+ expect(subject).to eql(
140
+ info: { title: 'API title', version: '0.0.2' },
141
+ swagger: '2.0',
142
+ produces: ['application/xml', 'application/json', 'application/octet-stream', 'text/plain'],
143
+ host: 'example.org',
144
+ tags: [{ name: 'both_versions', description: 'Operations about both_versions' }],
145
+ paths: {
146
+ :'/v2/both_versions' => {
147
+ get: {
148
+ description: 'both versions given',
149
+ produces: ['application/json'],
150
+ responses: {
151
+ :'200' => { description: 'both versions given' }
152
+ },
153
+ tags: ['both_versions'],
154
+ operationId: 'getV2BothVersions'
155
+ } } })
156
+ end
157
+ end
158
+ end
@@ -1,55 +1,54 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe GrapeSwagger::DocMethods::DataType do
4
-
5
4
  subject { described_class.call(value) }
6
5
 
7
- describe "standards" do
6
+ describe 'standards' do
8
7
  ['Boolean', Date, Integer, String, Float].each do |type|
9
8
  specify do
10
- data_type = described_class.call({ type: type })
9
+ data_type = described_class.call(type: type)
11
10
  expect(data_type).to eql type.to_s.downcase
12
11
  end
13
12
  end
14
13
  end
15
14
 
16
- describe "Hash" do
15
+ describe 'Hash' do
17
16
  let(:value) { { type: Hash } }
18
17
 
19
18
  it { expect(subject).to eql 'object' }
20
19
  end
21
20
 
22
- describe "Rack::Multipart::UploadedFile" do
21
+ describe 'Rack::Multipart::UploadedFile' do
23
22
  let(:value) { { type: Rack::Multipart::UploadedFile } }
24
23
 
25
24
  it { expect(subject).to eql 'file' }
26
25
  end
27
26
 
28
- describe "Virtus::Attribute::Boolean" do
27
+ describe 'Virtus::Attribute::Boolean' do
29
28
  let(:value) { { type: Virtus::Attribute::Boolean } }
30
29
 
31
30
  it { expect(subject).to eql 'boolean' }
32
31
  end
33
32
 
34
- describe "BigDecimal" do
33
+ describe 'BigDecimal' do
35
34
  let(:value) { { type: BigDecimal } }
36
35
 
37
36
  it { expect(subject).to eql 'double' }
38
37
  end
39
38
 
40
- describe "DateTime" do
39
+ describe 'DateTime' do
41
40
  let(:value) { { type: DateTime } }
42
41
 
43
42
  it { expect(subject).to eql 'dateTime' }
44
43
  end
45
44
 
46
- describe "Numeric" do
45
+ describe 'Numeric' do
47
46
  let(:value) { { type: Numeric } }
48
47
 
49
48
  it { expect(subject).to eql 'long' }
50
49
  end
51
50
 
52
- describe "Symbol" do
51
+ describe 'Symbol' do
53
52
  let(:value) { { type: Symbol } }
54
53
 
55
54
  it { expect(subject).to eql 'string' }
@@ -1,6 +1,5 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Grape::Endpoint do
4
- subject { described_class.new(Grape::Util::InheritableSetting.new, {path: '/', method: :get}) }
5
-
4
+ subject { described_class.new(Grape::Util::InheritableSetting.new, path: '/', method: :get) }
6
5
  end
@@ -1,10 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe GrapeSwagger::DocMethods::Extensions do
4
- describe "#extended? and extension" do
4
+ describe '#extended? and extension' do
5
5
  subject { described_class }
6
- describe "return false (default)" do
7
- let(:part) { {foo: 'bar', bar: 'foo'} }
6
+ describe 'return false (default)' do
7
+ let(:part) { { foo: 'bar', bar: 'foo' } }
8
8
 
9
9
  specify do
10
10
  expect(subject.extended?(part)).to be false
@@ -12,42 +12,42 @@ describe GrapeSwagger::DocMethods::Extensions do
12
12
  end
13
13
  end
14
14
 
15
- describe "return true" do
15
+ describe 'return true' do
16
16
  specify do
17
17
  part = { foo: 'bar', bar: 'foo', x: 'something' }
18
18
  expect(subject.extended?(part)).to be true
19
- expect(subject.extension(part)).to eql({ x: 'something' })
19
+ expect(subject.extension(part)).to eql(x: 'something')
20
20
  expect(subject.extended?(part, :x)).to be true
21
- expect(subject.extension(part, :x)).to eql({ x: 'something' })
21
+ expect(subject.extension(part, :x)).to eql(x: 'something')
22
22
  end
23
23
 
24
24
  specify do
25
25
  part = { foo: 'bar', bar: 'foo', x_path: 'something' }
26
26
  expect(subject.extended?(part, :x_path)).to be true
27
- expect(subject.extension(part, :x_path)).to eql({ x_path: 'something' })
27
+ expect(subject.extension(part, :x_path)).to eql(x_path: 'something')
28
28
  end
29
29
 
30
30
  specify do
31
31
  part = { foo: 'bar', bar: 'foo', x_def: 'something' }
32
32
  expect(subject.extended?(part, :x_def)).to be true
33
- expect(subject.extension(part, :x_def)).to eql({ x_def: 'something' })
33
+ expect(subject.extension(part, :x_def)).to eql(x_def: 'something')
34
34
  end
35
35
 
36
36
  specify do
37
37
  part = { foo: 'bar', bar: 'foo', x_path: 'something', x_def: 'something' }
38
38
  expect(subject.extended?(part, :x_path)).to be true
39
- expect(subject.extension(part, :x_path)).to eql({ x_path: 'something' })
39
+ expect(subject.extension(part, :x_path)).to eql(x_path: 'something')
40
40
  expect(subject.extended?(part, :x_def)).to be true
41
- expect(subject.extension(part, :x_def)).to eql({ x_def: 'something' })
41
+ expect(subject.extension(part, :x_def)).to eql(x_def: 'something')
42
42
  end
43
43
  end
44
44
  end
45
45
 
46
- describe "concatenate" do
47
- describe "not nested" do
48
- describe "simple" do
49
- let(:extensions) { {x: {key_1: 'foo'}} }
50
- let(:result) { {'x-key_1' => 'foo'} }
46
+ describe 'concatenate' do
47
+ describe 'not nested' do
48
+ describe 'simple' do
49
+ let(:extensions) { { x: { key_1: 'foo' } } }
50
+ let(:result) { { 'x-key_1' => 'foo' } }
51
51
  subject { described_class.concatenate(extensions) }
52
52
 
53
53
  specify do
@@ -55,9 +55,9 @@ describe GrapeSwagger::DocMethods::Extensions do
55
55
  end
56
56
  end
57
57
 
58
- describe "multiple" do
59
- let(:extensions) { {x: {key_1: 'foo', key_2: 'bar'}} }
60
- let(:result) { {'x-key_1' => 'foo', 'x-key_2' => 'bar'} }
58
+ describe 'multiple' do
59
+ let(:extensions) { { x: { key_1: 'foo', key_2: 'bar' } } }
60
+ let(:result) { { 'x-key_1' => 'foo', 'x-key_2' => 'bar' } }
61
61
  subject { described_class.concatenate(extensions) }
62
62
 
63
63
  specify do
@@ -66,10 +66,10 @@ describe GrapeSwagger::DocMethods::Extensions do
66
66
  end
67
67
  end
68
68
 
69
- describe "nested" do
70
- describe "simple" do
71
- let(:extensions) { {x: {key_1: { key_2: 'foo'}}} }
72
- let(:result) { {'x-key_1' => { key_2: 'foo'}} }
69
+ describe 'nested' do
70
+ describe 'simple' do
71
+ let(:extensions) { { x: { key_1: { key_2: 'foo' } } } }
72
+ let(:result) { { 'x-key_1' => { key_2: 'foo' } } }
73
73
  subject { described_class.concatenate(extensions) }
74
74
 
75
75
  specify do
@@ -77,9 +77,9 @@ describe GrapeSwagger::DocMethods::Extensions do
77
77
  end
78
78
  end
79
79
 
80
- describe "simple multiple" do
81
- let(:extensions) { {x: {key_1: { key_2: 'foo', key_3: 'bar'}}} }
82
- let(:result) { {'x-key_1' => { key_2: 'foo', key_3: 'bar'}} }
80
+ describe 'simple multiple' do
81
+ let(:extensions) { { x: { key_1: { key_2: 'foo', key_3: 'bar' } } } }
82
+ let(:result) { { 'x-key_1' => { key_2: 'foo', key_3: 'bar' } } }
83
83
  subject { described_class.concatenate(extensions) }
84
84
 
85
85
  specify do
@@ -87,9 +87,9 @@ describe GrapeSwagger::DocMethods::Extensions do
87
87
  end
88
88
  end
89
89
 
90
- describe "simple deeper" do
91
- let(:extensions) { {x: {key_1: { key_2: {key_3: 'foo'}}}} }
92
- let(:result) { {'x-key_1' => { key_2: {key_3: 'foo'}}} }
90
+ describe 'simple deeper' do
91
+ let(:extensions) { { x: { key_1: { key_2: { key_3: 'foo' } } } } }
92
+ let(:result) { { 'x-key_1' => { key_2: { key_3: 'foo' } } } }
93
93
  subject { described_class.concatenate(extensions) }
94
94
 
95
95
  specify do
@@ -97,9 +97,9 @@ describe GrapeSwagger::DocMethods::Extensions do
97
97
  end
98
98
  end
99
99
 
100
- describe "multiple" do
101
- let(:extensions) { {x: {key_1: { key_3: 'foo'}, key_2: { key_3: 'bar' }}} }
102
- let(:result) { {'x-key_1' => { key_3: 'foo'}, 'x-key_2' => { key_3: 'bar' }} }
100
+ describe 'multiple' do
101
+ let(:extensions) { { x: { key_1: { key_3: 'foo' }, key_2: { key_3: 'bar' } } } }
102
+ let(:result) { { 'x-key_1' => { key_3: 'foo' }, 'x-key_2' => { key_3: 'bar' } } }
103
103
  subject { described_class.concatenate(extensions) }
104
104
 
105
105
  specify do
@@ -108,15 +108,19 @@ describe GrapeSwagger::DocMethods::Extensions do
108
108
  end
109
109
  end
110
110
 
111
- describe "reale example" do
112
- let(:extensions) { {x: {
113
- 'amazon-apigateway-auth' => {type: 'none'},
114
- 'amazon-apigateway-integration' => {type: 'aws', uri: 'foo_bar_uri', httpMethod: 'get'}
115
- }} }
116
- let(:result) { {
117
- 'x-amazon-apigateway-auth' => {type: 'none'},
118
- 'x-amazon-apigateway-integration' => {type: 'aws', uri: 'foo_bar_uri', httpMethod: 'get'}
119
- } }
111
+ describe 'real example' do
112
+ let(:extensions) do
113
+ { x: {
114
+ 'amazon-apigateway-auth' => { type: 'none' },
115
+ 'amazon-apigateway-integration' => { type: 'aws', uri: 'foo_bar_uri', httpMethod: 'get' }
116
+ } }
117
+ end
118
+ let(:result) do
119
+ {
120
+ 'x-amazon-apigateway-auth' => { type: 'none' },
121
+ 'x-amazon-apigateway-integration' => { type: 'aws', uri: 'foo_bar_uri', httpMethod: 'get' }
122
+ }
123
+ end
120
124
  subject { described_class.concatenate(extensions) }
121
125
 
122
126
  specify do
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe GrapeSwagger::DocMethods::MoveParams do
4
- include_context "the api paths/defs"
4
+ include_context 'the api paths/defs'
5
5
 
6
6
  subject { described_class }
7
7
 
@@ -15,22 +15,28 @@ describe GrapeSwagger::DocMethods::MoveParams do
15
15
  end
16
16
 
17
17
  describe 'no post/put given' do
18
- let(:paths) {{
19
- :'/foo'=> { get: {}, delete: {}},
20
- :'/bar/{key}'=> { get: {}, delete: {}},
21
- }}
18
+ let(:paths) do
19
+ {
20
+ :'/foo' => { get: {}, delete: {} },
21
+ :'/bar/{key}' => { get: {}, delete: {} }
22
+ }
23
+ end
22
24
  specify { expect { |b| subject.find_post_put(paths, &b) }.not_to yield_control }
23
25
  end
24
26
 
25
27
  describe 'no post/put given' do
26
- let(:paths) {{
27
- :'/foo'=> { get: {}, delete: {}, post: {}, put: {}, patch: {} },
28
- :'/bar/{key}'=> { get: {}, delete: {}, post: {}, put: {}, patch: {}},
29
- }}
30
- let(:expected) {[
31
- { post: {}, put: {}, patch: {}},
32
- { post: {}, put: {}, patch: {}},
33
- ]}
28
+ let(:paths) do
29
+ {
30
+ :'/foo' => { get: {}, delete: {}, post: {}, put: {}, patch: {} },
31
+ :'/bar/{key}' => { get: {}, delete: {}, post: {}, put: {}, patch: {} }
32
+ }
33
+ end
34
+ let(:expected) do
35
+ [
36
+ { post: {}, put: {}, patch: {} },
37
+ { post: {}, put: {}, patch: {} }
38
+ ]
39
+ end
34
40
  specify { expect { |b| subject.find_post_put(paths, &b) }.to yield_control.twice }
35
41
  specify { expect { |b| subject.find_post_put(paths, &b) }.to yield_successive_args *expected }
36
42
  end
@@ -39,19 +45,18 @@ describe GrapeSwagger::DocMethods::MoveParams do
39
45
  describe 'find_definition_and_params' do
40
46
  specify do
41
47
  subject.instance_variable_set(:@definitions, definitions)
42
- subject.find_definition_and_params(found_path)
43
-
44
- expect(definitions.keys).to include 'InBody', 'postRequestInBody'
48
+ subject.find_definition_and_params(found_path, :post)
49
+ expect(definitions.keys).to include 'InBody'
45
50
  end
46
51
  end
47
52
 
48
53
  describe 'move_params_to_new definition' do
49
54
  let(:name) { 'Foo' }
50
- let(:definitions) {{}}
55
+ let(:definitions) { {} }
51
56
 
52
57
  describe 'post request' do
53
58
  let(:verb) { 'post' }
54
- let(:params) { paths["/in_body"][:post][:parameters] }
59
+ let(:params) { paths['/in_body'][:post][:parameters] }
55
60
 
56
61
  specify do
57
62
  subject.instance_variable_set(:@definitions, definitions)
@@ -65,7 +70,7 @@ describe GrapeSwagger::DocMethods::MoveParams do
65
70
 
66
71
  describe 'put request' do
67
72
  let(:verb) { 'put' }
68
- let(:params) { paths["/in_body/{key}"][:put][:parameters] }
73
+ let(:params) { paths['/in_body/{key}'][:put][:parameters] }
69
74
 
70
75
  specify do
71
76
  subject.instance_variable_set(:@definitions, definitions)
@@ -85,24 +90,24 @@ describe GrapeSwagger::DocMethods::MoveParams do
85
90
  end
86
91
 
87
92
  describe 'simple' do
88
- let(:params) {[{:in=>"body", :name=>"address[street]", :description=>"street", :type=>"string", :required=>true}]}
89
- let(:expected) {[{:in=>"body", :name=>"street", :description=>"street", :type=>"string", :required=>true}]}
93
+ let(:params) { [{ in: 'body', name: 'address[street]', description: 'street', type: 'string', required: true }] }
94
+ let(:expected) { [{ in: 'body', name: 'street', description: 'street', type: 'string', required: true }] }
90
95
  specify do
91
96
  expect(params).to eql expected
92
97
  end
93
98
  end
94
99
 
95
100
  describe 'nested' do
96
- let(:params) {[{:in=>"body", :name=>"address[street][name]", :description=>"street", :type=>"string", :required=>true}]}
97
- let(:expected) {[{:in=>"body", :name=>"street[name]", :description=>"street", :type=>"string", :required=>true}]}
101
+ let(:params) { [{ in: 'body', name: 'address[street][name]', description: 'street', type: 'string', required: true }] }
102
+ let(:expected) { [{ in: 'body', name: 'street[name]', description: 'street', type: 'string', required: true }] }
98
103
  specify do
99
104
  expect(params).to eql expected
100
105
  end
101
106
  end
102
107
 
103
108
  describe 'array' do
104
- let(:params) {[{:in=>"body", :name=>"address[][street_lines]", :description=>"street lines", :type=>"array", :required=>true}]}
105
- let(:expected) {[{:in=>"body", :name=>"street_lines", :description=>"street lines", :type=>"array", :required=>true}]}
109
+ let(:params) { [{ in: 'body', name: 'address[][street_lines]', description: 'street lines', type: 'array', required: true }] }
110
+ let(:expected) { [{ in: 'body', name: 'street_lines', description: 'street lines', type: 'array', required: true }] }
106
111
  specify do
107
112
  expect(params).to eql expected
108
113
  end
@@ -120,36 +125,36 @@ describe GrapeSwagger::DocMethods::MoveParams do
120
125
  describe 'verb given' do
121
126
  let(:verb) { 'post' }
122
127
  let(:name) { 'Foo' }
123
- let(:definitions) {{}}
128
+ let(:definitions) { {} }
124
129
 
125
130
  specify do
126
131
  definition = definitions.to_a.first
127
132
  expect(definition.first).to eql 'postRequestFoo'
128
- expect(definition.last).to eql({ type: 'object', properties: {}, required: [] })
133
+ expect(definition.last).to eql(type: 'object', properties: {}, required: [])
129
134
  end
130
135
  end
131
136
 
132
137
  describe 'no verb given' do
133
138
  let(:name) { 'FooBar' }
134
- let(:definitions) {{}}
139
+ let(:definitions) { {} }
135
140
  let(:verb) { nil }
136
141
 
137
142
  specify do
138
143
  definition = definitions.to_a.first
139
144
  expect(definition.first).to eql 'FooBar'
140
- expect(definition.last).to eql({ type: 'object', properties: {}, required: [] })
145
+ expect(definition.last).to eql(type: 'object', properties: {}, required: [])
141
146
  end
142
147
  end
143
148
  end
144
149
 
145
150
  describe 'build_body_parameter' do
146
- let(:response) {{ schema: { '$ref' => '#/definitions/Somewhere'} }}
151
+ let(:response) { { schema: { '$ref' => '#/definitions/Somewhere' } } }
147
152
 
148
153
  describe 'no name given' do
149
154
  let(:name) { nil }
150
- let(:expected_param) {
151
- {:name=>"Somewhere", :in=>"body", :required=>true, :schema=>{'$ref' => "#/definitions/Somewhere"}}
152
- }
155
+ let(:expected_param) do
156
+ { name: 'Somewhere', in: 'body', required: true, schema: { '$ref' => '#/definitions/Somewhere' } }
157
+ end
153
158
  specify do
154
159
  parameter = subject.send(:build_body_parameter, response)
155
160
  expect(parameter).to eql expected_param
@@ -158,9 +163,9 @@ describe GrapeSwagger::DocMethods::MoveParams do
158
163
 
159
164
  describe 'name given' do
160
165
  let(:name) { 'Foo' }
161
- let(:expected_param) {
162
- {:name=>"Somewhere", :in=>"body", :required=>true, :schema=>{'$ref' => "#/definitions/#{name}"}}
163
- }
166
+ let(:expected_param) do
167
+ { name: 'Somewhere', in: 'body', required: true, schema: { '$ref' => "#/definitions/#{name}" } }
168
+ end
164
169
  specify do
165
170
  parameter = subject.send(:build_body_parameter, response, name)
166
171
  expect(parameter).to eql expected_param
@@ -177,63 +182,67 @@ describe GrapeSwagger::DocMethods::MoveParams do
177
182
 
178
183
  describe 'movable' do
179
184
  describe 'path' do
180
- let(:param) {{ in: "path", name: "key", description: nil, type: "integer", format: "int32", required: true }}
185
+ let(:param) { { in: 'path', name: 'key', description: nil, type: 'integer', format: 'int32', required: true } }
181
186
  it { expect(subject.send(:movable?, param)).to be true }
182
187
  end
183
188
 
184
189
  describe 'body' do
185
- let(:param) {{ in: "body", name: "in_body", description: "in_body", type: "integer", format: "int32", required: true }}
190
+ let(:param) { { in: 'body', name: 'in_body', description: 'in_body', type: 'integer', format: 'int32', required: true } }
186
191
  it { expect(subject.send(:movable?, param)).to be true }
187
192
  end
188
193
 
189
194
  describe 'query' do
190
- let(:param) {{ in: "query", name: "in_query", description: "in_query", type: "integer", format: "int32", required: true }}
195
+ let(:param) { { in: 'query', name: 'in_query', description: 'in_query', type: 'integer', format: 'int32', required: true } }
191
196
  it { expect(subject.send(:movable?, param)).to be false }
192
197
  end
193
198
 
194
199
  describe 'header' do
195
- let(:param) {{ in: "header", name: "in_header", description: "in_header", type: "integer", format: "int32", required: true }}
200
+ let(:param) { { in: 'header', name: 'in_header', description: 'in_header', type: 'integer', format: 'int32', required: true } }
196
201
  it { expect(subject.send(:movable?, param)).to be false }
197
202
  end
198
203
  end
199
204
 
200
205
  describe 'deletable' do
201
206
  describe 'path' do
202
- let(:param) {{ in: "path", name: "key", description: nil, type: "integer", format: "int32", required: true }}
207
+ let(:param) { { in: 'path', name: 'key', description: nil, type: 'integer', format: 'int32', required: true } }
203
208
  it { expect(subject.send(:deletable?, param)).to be false }
204
209
  end
205
210
 
206
211
  describe 'body' do
207
- let(:param) {{ in: "body", name: "in_body_1", description: "in_body_1", type: "integer", format: "int32", required: true }}
212
+ let(:param) { { in: 'body', name: 'in_body_1', description: 'in_body_1', type: 'integer', format: 'int32', required: true } }
208
213
  it { expect(subject.send(:deletable?, param)).to be true }
209
214
  end
210
215
 
211
216
  describe 'query' do
212
- let(:param) {{ in: "query", name: "in_query_1", description: "in_query_1", type: "integer", format: "int32", required: true }}
217
+ let(:param) { { in: 'query', name: 'in_query_1', description: 'in_query_1', type: 'integer', format: 'int32', required: true } }
213
218
  it { expect(subject.send(:deletable?, param)).to be false }
214
219
  end
215
220
 
216
221
  describe 'header' do
217
- let(:param) {{ in: "header", name: "in_header_1", description: "in_header_1", type: "integer", format: "int32", required: true }}
222
+ let(:param) { { in: 'header', name: 'in_header_1', description: 'in_header_1', type: 'integer', format: 'int32', required: true } }
218
223
  it { expect(subject.send(:deletable?, param)).to be false }
219
224
  end
220
225
  end
221
226
 
222
227
  describe 'should move' do
223
228
  describe 'no move' do
224
- let(:params) {[
225
- { in: "path", name: "key", description: nil, type: "integer", format: "int32", required: true },
226
- { in: "formData", name: "in_form_data", description: "in_form_data", type: "integer", format: "int32", required: true }
227
- ]}
229
+ let(:params) do
230
+ [
231
+ { in: 'path', name: 'key', description: nil, type: 'integer', format: 'int32', required: true },
232
+ { in: 'formData', name: 'in_form_data', description: 'in_form_data', type: 'integer', format: 'int32', required: true }
233
+ ]
234
+ end
228
235
  it { expect(subject.send(:should_move?, params)).to be false }
229
236
  end
230
237
 
231
238
  describe 'move' do
232
- let(:params) {[
233
- { in: "path", name: "key", description: nil, type: "integer", format: "int32", required: true },
234
- { in: "body", name: "in_bosy", description: "in_bosy", type: "integer", format: "int32", required: true },
235
- { in: "formData", name: "in_form_data", description: "in_form_data", type: "integer", format: "int32", required: true }
236
- ]}
239
+ let(:params) do
240
+ [
241
+ { in: 'path', name: 'key', description: nil, type: 'integer', format: 'int32', required: true },
242
+ { in: 'body', name: 'in_bosy', description: 'in_bosy', type: 'integer', format: 'int32', required: true },
243
+ { in: 'formData', name: 'in_form_data', description: 'in_form_data', type: 'integer', format: 'int32', required: true }
244
+ ]
245
+ end
237
246
  it { expect(subject.send(:should_move?, params)).to be true }
238
247
  end
239
248
  end
@@ -243,54 +252,65 @@ describe GrapeSwagger::DocMethods::MoveParams do
243
252
  subject.send(:unify!, params) if subject.send(:should_move?, params)
244
253
  end
245
254
  describe 'param type with `:in` given' do
246
- let(:params) {[
247
- { in: "path", name: "key", description: nil, type: "integer", format: "int32", required: true },
248
- { in: "body", name: "in_body", description: "in_body", type: "integer", format: "int32", required: true },
249
- { in: "query", name: "in_query", description: "in_query", type: "integer", format: "int32", required: true },
250
- { in: "header", name: "in_header", description: "in_header", type: "integer", format: "int32", required: true },
251
- { in: "formData", name: "in_form_data", description: "in_form_data", type: "integer", format: "int32", required: true }
252
- ]}
253
-
254
- let(:expected_params) {[
255
- { in: "path", name: "key", description: nil, type: "integer", format: "int32", required: true },
256
- { in: "body", name: "in_body", description: "in_body", type: "integer", format: "int32", required: true },
257
- { in: "query", name: "in_query", description: "in_query", type: "integer", format: "int32", required: true },
258
- { in: "header", name: "in_header", description: "in_header", type: "integer", format: "int32", required: true },
259
- { in: "body", name: "in_form_data", description: "in_form_data", type: "integer", format: "int32", required: true }
260
- ]}
255
+ let(:params) do
256
+ [
257
+ { in: 'path', name: 'key', description: nil, type: 'integer', format: 'int32', required: true },
258
+ { in: 'body', name: 'in_body', description: 'in_body', type: 'integer', format: 'int32', required: true },
259
+ { in: 'query', name: 'in_query', description: 'in_query', type: 'integer', format: 'int32', required: true },
260
+ { in: 'header', name: 'in_header', description: 'in_header', type: 'integer', format: 'int32', required: true },
261
+ { in: 'formData', name: 'in_form_data', description: 'in_form_data', type: 'integer', format: 'int32', required: true }
262
+ ]
263
+ end
264
+
265
+ let(:expected_params) do
266
+ [
267
+ { in: 'path', name: 'key', description: nil, type: 'integer', format: 'int32', required: true },
268
+ { in: 'body', name: 'in_body', description: 'in_body', type: 'integer', format: 'int32', required: true },
269
+ { in: 'query', name: 'in_query', description: 'in_query', type: 'integer', format: 'int32', required: true },
270
+ { in: 'header', name: 'in_header', description: 'in_header', type: 'integer', format: 'int32', required: true },
271
+ { in: 'body', name: 'in_form_data', description: 'in_form_data', type: 'integer', format: 'int32', required: true }
272
+ ]
273
+ end
261
274
  it { expect(params).to eql expected_params }
262
275
  end
263
276
 
264
277
  describe 'let it as is' do
265
- let(:params) {[
266
- { in: "path", name: "key", description: nil, type: "integer", format: "int32", required: true },
267
- { in: "formData", name: "in_form_data", description: "in_form_data", type: "integer", format: "int32", required: true }
268
- ]}
269
-
270
- let(:expected_params) {[
271
- { in: "path", name: "key", description: nil, type: "integer", format: "int32", required: true },
272
- { in: "formData", name: "in_form_data", description: "in_form_data", type: "integer", format: "int32", required: true }
273
- ]}
274
- it { expect(params).to eql expected_params }
278
+ let(:params) do
279
+ [
280
+ { in: 'path', name: 'key', description: nil, type: 'integer', format: 'int32', required: true },
281
+ { in: 'formData', name: 'in_form_data', description: 'in_form_data', type: 'integer', format: 'int32', required: true }
282
+ ]
283
+ end
275
284
 
285
+ let(:expected_params) do
286
+ [
287
+ { in: 'path', name: 'key', description: nil, type: 'integer', format: 'int32', required: true },
288
+ { in: 'formData', name: 'in_form_data', description: 'in_form_data', type: 'integer', format: 'int32', required: true }
289
+ ]
290
+ end
291
+ it { expect(params).to eql expected_params }
276
292
  end
277
293
 
278
294
  describe 'param type with `:param_type` given' do
279
- let(:params) {[
280
- { param_type: "path", name: "key", description: nil, type: "integer", format: "int32", required: true },
281
- { param_type: "body", name: "in_body", description: "in_body", type: "integer", format: "int32", required: true },
282
- { param_type: "query", name: "in_query", description: "in_query", type: "integer", format: "int32", required: true },
283
- { param_type: "header", name: "in_header", description: "in_header", type: "integer", format: "int32", required: true },
284
- { param_type: "formData", name: "in_form_data", description: "in_form_data", type: "integer", format: "int32", required: true }
285
- ]}
286
-
287
- let(:expected_params) {[
288
- { name: "key", description: nil, type: "integer", format: "int32", required: true, in: "path" },
289
- { name: "in_body", description: "in_body", type: "integer", format: "int32", required: true, in: "body" },
290
- { name: "in_query", description: "in_query", type: "integer", format: "int32", required: true, in: "query" },
291
- { name: "in_header", description: "in_header", type: "integer", format: "int32", required: true, in: "header" },
292
- { name: "in_form_data", description: "in_form_data", type: "integer", format: "int32", required: true, in: "body" }
293
- ]}
295
+ let(:params) do
296
+ [
297
+ { param_type: 'path', name: 'key', description: nil, type: 'integer', format: 'int32', required: true },
298
+ { param_type: 'body', name: 'in_body', description: 'in_body', type: 'integer', format: 'int32', required: true },
299
+ { param_type: 'query', name: 'in_query', description: 'in_query', type: 'integer', format: 'int32', required: true },
300
+ { param_type: 'header', name: 'in_header', description: 'in_header', type: 'integer', format: 'int32', required: true },
301
+ { param_type: 'formData', name: 'in_form_data', description: 'in_form_data', type: 'integer', format: 'int32', required: true }
302
+ ]
303
+ end
304
+
305
+ let(:expected_params) do
306
+ [
307
+ { name: 'key', description: nil, type: 'integer', format: 'int32', required: true, in: 'path' },
308
+ { name: 'in_body', description: 'in_body', type: 'integer', format: 'int32', required: true, in: 'body' },
309
+ { name: 'in_query', description: 'in_query', type: 'integer', format: 'int32', required: true, in: 'query' },
310
+ { name: 'in_header', description: 'in_header', type: 'integer', format: 'int32', required: true, in: 'header' },
311
+ { name: 'in_form_data', description: 'in_form_data', type: 'integer', format: 'int32', required: true, in: 'body' }
312
+ ]
313
+ end
294
314
  it { expect(params).to eql expected_params }
295
315
  end
296
316
  end