|
7 | 7 |
|
8 | 8 | it { expect(subject.to_s).to eql 'GrapeSwagger::DocMethods::MoveParams' }
|
9 | 9 |
|
10 |
| - describe 'find_post_put' do |
11 |
| - let(:paths) { {} } |
12 |
| - |
13 |
| - describe 'paths empty' do |
14 |
| - specify { expect { |b| subject.find_post_put(paths, &b) }.not_to yield_control } |
15 |
| - end |
16 |
| - |
17 |
| - describe 'no post/put given' do |
18 |
| - let(:paths) do |
19 |
| - { |
20 |
| - :'/foo' => { get: {}, delete: {} }, |
21 |
| - :'/bar/{key}' => { get: {}, delete: {} } |
22 |
| - } |
23 |
| - end |
24 |
| - specify { expect { |b| subject.find_post_put(paths, &b) }.not_to yield_control } |
| 10 | + describe 'parent_definition_of_params' do |
| 11 | + let(:params) { paths['/in_body'][:post][:parameters] } |
| 12 | + let(:options) do |
| 13 | + { |
| 14 | + method: 'POST' |
| 15 | + } |
25 | 16 | end
|
| 17 | + let(:env) { Rack::MockRequest.env_for('/in_body', options) } |
| 18 | + let(:request) { Grape::Request.new(env) } |
26 | 19 |
|
27 |
| - describe 'no post/put given' do |
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 |
40 |
| - specify { expect { |b| subject.find_post_put(paths, &b) }.to yield_control.twice } |
41 |
| - specify { expect { |b| subject.find_post_put(paths, &b) }.to yield_successive_args *expected } |
42 |
| - end |
43 |
| - end |
44 |
| - |
45 |
| - describe 'find_definition_and_params' do |
46 | 20 | specify do
|
47 | 21 | subject.instance_variable_set(:@definitions, definitions)
|
48 |
| - subject.find_definition_and_params(found_path[:post], :post) |
49 |
| - expect(definitions.keys).to include 'InBody' |
50 |
| - expect(definitions['postRequestInBody'].keys).to_not include :description |
| 22 | + body_definition = subject.parent_definition_of_params(params, request).first |
| 23 | + |
| 24 | + expect(body_definition[:schema]['$ref']).to eql '#/definitions/postInBody' |
| 25 | + expect(subject.definitions['postInBody']).not_to include :description |
51 | 26 | end
|
52 | 27 | end
|
53 | 28 |
|
|
61 | 36 |
|
62 | 37 | specify do
|
63 | 38 | subject.instance_variable_set(:@definitions, definitions)
|
64 |
| - name = subject.send(:build_definition, name, verb) |
65 |
| - subject.move_params_to_new(name, params) |
66 |
| - |
67 |
| - expect(definitions[name]).to eql expected_post_defs |
| 39 | + def_name = subject.send(:build_definition, name, verb) |
| 40 | + subject.move_params_to_new(def_name, definitions[def_name], params) |
| 41 | + expect(definitions[def_name]).to eql expected_post_defs |
68 | 42 | expect(params).to be_empty
|
69 | 43 | end
|
70 | 44 | end
|
|
75 | 49 |
|
76 | 50 | specify do
|
77 | 51 | subject.instance_variable_set(:@definitions, definitions)
|
78 |
| - name, definition = subject.send(:build_definition, name, verb) |
79 |
| - subject.move_params_to_new(name, params) |
80 | 52 |
|
81 |
| - expect(definitions[name]).to eql expected_put_defs |
| 53 | + def_name = subject.send(:build_definition, name, verb) |
| 54 | + subject.move_params_to_new(def_name, definitions[def_name], params) |
| 55 | + |
| 56 | + expect(definitions[def_name]).to eql expected_put_defs |
82 | 57 | expect(params.length).to be 1
|
83 | 58 | end
|
84 | 59 | end
|
|
130 | 105 |
|
131 | 106 | specify do
|
132 | 107 | definition = definitions.to_a.first
|
133 |
| - expect(definition.first).to eql 'postRequestFoo' |
| 108 | + expect(definition.first).to eql 'postFoo' |
134 | 109 | expect(definition.last).to eql(type: 'object', properties: {}, required: [])
|
135 | 110 | end
|
136 | 111 | end
|
|
149 | 124 | end
|
150 | 125 |
|
151 | 126 | describe 'build_body_parameter' do
|
152 |
| - let(:response) { { schema: { '$ref' => '#/definitions/Somewhere' } } } |
153 |
| - |
154 |
| - describe 'no name given' do |
155 |
| - let(:name) { nil } |
156 |
| - let(:expected_param) do |
157 |
| - { name: 'Somewhere', in: 'body', required: true, schema: { '$ref' => '#/definitions/Somewhere' } } |
158 |
| - end |
159 |
| - specify do |
160 |
| - parameter = subject.send(:build_body_parameter, response) |
161 |
| - expect(parameter).to eql expected_param |
162 |
| - end |
163 |
| - end |
164 |
| - |
165 | 127 | describe 'name given' do
|
166 | 128 | let(:name) { 'Foo' }
|
| 129 | + let(:reference) { 'Bar' } |
167 | 130 | let(:expected_param) do
|
168 |
| - { name: 'Somewhere', in: 'body', required: true, schema: { '$ref' => "#/definitions/#{name}" } } |
| 131 | + { name: name, in: 'body', required: true, schema: { '$ref' => "#/definitions/#{reference}" } } |
169 | 132 | end
|
170 | 133 | specify do
|
171 |
| - parameter = subject.send(:build_body_parameter, response, name) |
| 134 | + parameter = subject.send(:build_body_parameter, reference, name) |
172 | 135 | expect(parameter).to eql expected_param
|
173 | 136 | end
|
174 | 137 | end
|
175 | 138 | end
|
176 | 139 |
|
177 | 140 | describe 'parse_model' do
|
178 | 141 | let(:ref) { '#/definitions/InBody' }
|
179 |
| - subject(:object) { described_class.send(:parse_model, ref) } |
| 142 | + describe 'post request' do |
| 143 | + subject(:object) { described_class.send(:parse_model, ref) } |
| 144 | + |
| 145 | + specify { expect(object).to eql ref } |
| 146 | + end |
| 147 | + |
| 148 | + describe 'post request' do |
| 149 | + let(:put_ref) { '#/definitions/InBody/{id}' } |
| 150 | + subject(:object) { described_class.send(:parse_model, put_ref) } |
180 | 151 |
|
181 |
| - specify { expect(object).to eql 'InBody' } |
| 152 | + specify { expect(object).to eql ref } |
| 153 | + end |
182 | 154 | end
|
183 | 155 |
|
184 | 156 | describe 'movable' do
|
|
225 | 197 | end
|
226 | 198 | end
|
227 | 199 |
|
228 |
| - describe 'should move' do |
229 |
| - describe 'no move' do |
230 |
| - let(:params) do |
231 |
| - [ |
232 |
| - { in: 'path', name: 'key', description: nil, type: 'integer', format: 'int32', required: true }, |
233 |
| - { in: 'formData', name: 'in_form_data', description: 'in_form_data', type: 'integer', format: 'int32', required: true } |
234 |
| - ] |
235 |
| - end |
236 |
| - it { expect(subject.send(:should_move?, params)).to be false } |
237 |
| - end |
238 |
| - |
239 |
| - describe 'move' do |
240 |
| - let(:params) do |
241 |
| - [ |
242 |
| - { in: 'path', name: 'key', description: nil, type: 'integer', format: 'int32', required: true }, |
243 |
| - { in: 'body', name: 'in_bosy', description: 'in_bosy', type: 'integer', format: 'int32', required: true }, |
244 |
| - { in: 'formData', name: 'in_form_data', description: 'in_form_data', type: 'integer', format: 'int32', required: true } |
245 |
| - ] |
246 |
| - end |
247 |
| - it { expect(subject.send(:should_move?, params)).to be true } |
248 |
| - end |
249 |
| - end |
250 |
| - |
251 | 200 | describe 'unify' do
|
252 |
| - before do |
253 |
| - subject.send(:unify!, params) if subject.send(:should_move?, params) |
| 201 | + before :each do |
| 202 | + subject.send(:unify!, params) |
254 | 203 | end
|
255 | 204 | describe 'param type with `:in` given' do
|
256 | 205 | let(:params) do
|
|
0 commit comments