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:
Gabriel Sobrinho
2020-04-16 22:00:55 -03:00
parent 7ceedab4cb
commit f8dbd98bbc
7 changed files with 110 additions and 1 deletions

View File

@@ -155,6 +155,52 @@
}
}
},
"/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": {
"post": {
"summary": "Creates a blog flexible body",