mirror of
https://github.com/ditkrg/rswag.git
synced 2026-01-25 07:16:40 +00:00
Add a macro for complexes multiparts
This will allow to describe multipart in a short way, like JSON payload:
Before:
put 'Creates a blog with thumbnail' do
consumes 'multipart/form-data'
parameter name: :title, in: :formData, type: :string, required: true
parameter name: :content, in: :formData, type: :string, required: true
parameter name: :file, in: :formData, type: :file, required: true
let(:blog) { FactoryBot.build(:blog) }
let(:title) { blog.title }
let(:content) { blog.content }
let(:file) { blog.file }
...
end
After:
put 'Creates a blog with thumbnail' do
consumes 'multipart/form-data'
parameter name: :blog, in: :formData, schema: { '$ref' => '#/definitions/blog' }
let(:blog) { FactoryBot.attributes_for(:blog) }
...
end
Your mileage may vary but you can always choose the best option.
This commit is contained in:
@@ -7,6 +7,7 @@ RSpec.feature 'swagger-ui', js: true do
|
||||
|
||||
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/multipart Creates a blog using multipart', normalize_ws: true)
|
||||
expect(page).to have_content('GET /blogs/{id} Retrieves a blog', normalize_ws: true)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -49,6 +49,33 @@ RSpec.describe 'Blogs API', type: :request, swagger_doc: 'v1/swagger.json' do
|
||||
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
|
||||
post 'Creates a blog flexible body' do
|
||||
tags 'Blogs'
|
||||
|
||||
Reference in New Issue
Block a user