mirror of
https://github.com/ditkrg/rswag.git
synced 2026-01-22 22:06:43 +00:00
Merge pull request #407 from rswag/revert-300-master
Revert "Add a macro for complexes multiparts"
This commit is contained in:
commit
05e22c3bd7
@ -186,22 +186,8 @@ module Rswag
|
|||||||
# Rather that serializing with the appropriate encoding (e.g. multipart/form-data),
|
# Rather that serializing with the appropriate encoding (e.g. multipart/form-data),
|
||||||
# Rails test infrastructure allows us to send the values directly as a hash
|
# Rails test infrastructure allows us to send the values directly as a hash
|
||||||
# PROS: simple to implement, CONS: serialization/deserialization is bypassed in test
|
# PROS: simple to implement, CONS: serialization/deserialization is bypassed in test
|
||||||
smart_payload = build_smart_form_payload(parameters, example)
|
|
||||||
raw_payload = build_raw_form_payload(parameters, example)
|
|
||||||
|
|
||||||
smart_payload.merge(raw_payload)
|
|
||||||
end
|
|
||||||
|
|
||||||
def build_smart_form_payload(parameters, example)
|
|
||||||
smart_tuples = parameters
|
|
||||||
.select { |p| p[:in] == :formData && p[:schema] }
|
|
||||||
.map { |p| example.send(p[:name]) }
|
|
||||||
.reduce({}, :merge)
|
|
||||||
end
|
|
||||||
|
|
||||||
def build_raw_form_payload(parameters, example)
|
|
||||||
tuples = parameters
|
tuples = parameters
|
||||||
.select { |p| p[:in] == :formData && !p[:schema] }
|
.select { |p| p[:in] == :formData }
|
||||||
.map { |p| [p[:name], example.send(p[:name])] }
|
.map { |p| [p[:name], example.send(p[:name])] }
|
||||||
Hash[tuples]
|
Hash[tuples]
|
||||||
end
|
end
|
||||||
|
|||||||
@ -178,20 +178,6 @@ module Rswag
|
|||||||
)
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'smart form payload' do
|
|
||||||
before do
|
|
||||||
metadata[:operation][:consumes] = ['multipart/form-data']
|
|
||||||
metadata[:operation][:parameters] = [{ name: 'comment', in: :formData, schema: { type: 'object' } }]
|
|
||||||
allow(example).to receive(:comment).and_return(text: 'Some comment')
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'sets payload to hash of names and example values' do
|
|
||||||
expect(request[:payload]).to eq(
|
|
||||||
:text => 'Some comment'
|
|
||||||
)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'produces content' do
|
context 'produces content' do
|
||||||
|
|||||||
@ -8,12 +8,6 @@ class BlogsController < ApplicationController
|
|||||||
respond_with @blog
|
respond_with @blog
|
||||||
end
|
end
|
||||||
|
|
||||||
# POST /blogs/multipart
|
|
||||||
def multipart_create
|
|
||||||
@blog = Blog.create(params.require(:blog).permit(:title, :content))
|
|
||||||
respond_with @blog
|
|
||||||
end
|
|
||||||
|
|
||||||
# POST /blogs/flexible
|
# POST /blogs/flexible
|
||||||
def flexible_create
|
def flexible_create
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
TestApp::Application.routes.draw do
|
TestApp::Application.routes.draw do
|
||||||
|
|
||||||
post '/blogs/multipart', to: 'blogs#multipart_create'
|
|
||||||
post '/blogs/flexible', to: 'blogs#flexible_create'
|
post '/blogs/flexible', to: 'blogs#flexible_create'
|
||||||
post '/blogs/alternate', to: 'blogs#alternate_create'
|
post '/blogs/alternate', to: 'blogs#alternate_create'
|
||||||
resources :blogs
|
resources :blogs
|
||||||
|
|||||||
@ -8,7 +8,6 @@ RSpec.feature 'swagger-ui', js: true do
|
|||||||
|
|
||||||
expect(page).to have_content('GET /blogs Searches blogs', normalize_ws: true)
|
expect(page).to have_content('GET /blogs Searches blogs', normalize_ws: true)
|
||||||
expect(page).to have_content('POST /blogs Creates a blog', normalize_ws: true)
|
expect(page).to have_content('POST /blogs Creates a blog', normalize_ws: true)
|
||||||
expect(page).to have_content('POST /blogs/multipart Creates a blog using multipart', normalize_ws: true)
|
|
||||||
expect(page).to have_content('GET /blogs/{id} Retrieves a blog', normalize_ws: true)
|
expect(page).to have_content('GET /blogs/{id} Retrieves a blog', normalize_ws: true)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -53,33 +53,6 @@ RSpec.describe 'Blogs API', type: :request, swagger_doc: 'v1/swagger.json' do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
path '/blogs/multipart' do
|
|
||||||
post 'Creates a blog using multipart' do
|
|
||||||
tags 'Blogs'
|
|
||||||
description 'Creates a new blog from provided data'
|
|
||||||
operationId 'createBlogWithMultipart'
|
|
||||||
consumes 'multipart/form-data'
|
|
||||||
produces 'application/json'
|
|
||||||
parameter name: :blog, in: :formData, schema: { type: :object, properties: { name: :blog, type: :object, properties: { '$ref' => '#/definitions/blog' } } }
|
|
||||||
|
|
||||||
let(:blog) { { blog: { title: 'foo', content: 'bar' } } }
|
|
||||||
|
|
||||||
response '201', 'blog created' do
|
|
||||||
# schema '$ref' => '#/definitions/blog'
|
|
||||||
run_test!
|
|
||||||
end
|
|
||||||
|
|
||||||
response '422', 'invalid request' do
|
|
||||||
schema '$ref' => '#/definitions/errors_object'
|
|
||||||
|
|
||||||
let(:blog) { { blog: { title: 'foo' } } }
|
|
||||||
run_test! do |response|
|
|
||||||
expect(response.body).to include("can't be blank")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
path '/blogs/flexible' do
|
path '/blogs/flexible' do
|
||||||
post 'Creates a blog flexible body' do
|
post 'Creates a blog flexible body' do
|
||||||
tags 'Blogs'
|
tags 'Blogs'
|
||||||
|
|||||||
@ -139,52 +139,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"/blogs/multipart": {
|
|
||||||
"post": {
|
|
||||||
"summary": "Creates a blog using multipart",
|
|
||||||
"tags": [
|
|
||||||
"Blogs"
|
|
||||||
],
|
|
||||||
"description": "Creates a new blog from provided data",
|
|
||||||
"operationId": "createBlogWithMultipart",
|
|
||||||
"parameters": [
|
|
||||||
|
|
||||||
],
|
|
||||||
"responses": {
|
|
||||||
"201": {
|
|
||||||
"description": "blog created",
|
|
||||||
"content": {
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"422": {
|
|
||||||
"description": "invalid request",
|
|
||||||
"content": {
|
|
||||||
"application/json": {
|
|
||||||
"schema": {
|
|
||||||
"$ref": "#/definitions/errors_object"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"requestBody": {
|
|
||||||
"content": {
|
|
||||||
"multipart/form-data": {
|
|
||||||
"schema": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"name": "blog",
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"$ref": "#/definitions/blog"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"/blogs/flexible": {
|
"/blogs/flexible": {
|
||||||
"post": {
|
"post": {
|
||||||
"summary": "Creates a blog flexible body",
|
"summary": "Creates a blog flexible body",
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user