From 6e39d43e3d191904a90c458b6555b8fdf41d754c Mon Sep 17 00:00:00 2001 From: Ferdi Koomen Date: Thu, 28 Oct 2021 20:49:28 +0200 Subject: [PATCH] - Fixed form data examples --- src/openApi/v3/parser/getOperation.ts | 1 - test/__snapshots__/index.spec.js.snap | 40 ++++++++++++++++++++++ test/spec/v3.json | 48 +++++++++++++++++++-------- 3 files changed, 74 insertions(+), 15 deletions(-) diff --git a/src/openApi/v3/parser/getOperation.ts b/src/openApi/v3/parser/getOperation.ts index e13c9094..4edff402 100644 --- a/src/openApi/v3/parser/getOperation.ts +++ b/src/openApi/v3/parser/getOperation.ts @@ -64,7 +64,6 @@ export function getOperation( operation.parametersBody = parameters.parametersBody; } - // TODO: form data goes wrong here: https://github.com/ferdikoomen/openapi-typescript-codegen/issues/257ยง if (op.requestBody) { const requestBodyDef = getRef(openApi, op.requestBody); const requestBody = getOperationRequestBody(openApi, requestBodyDef); diff --git a/test/__snapshots__/index.spec.js.snap b/test/__snapshots__/index.spec.js.snap index 3ac2a1af..5f5d807f 100644 --- a/test/__snapshots__/index.spec.js.snap +++ b/test/__snapshots__/index.spec.js.snap @@ -3090,6 +3090,7 @@ export { CollectionFormatService } from './services/CollectionFormatService'; export { ComplexService } from './services/ComplexService'; export { DefaultsService } from './services/DefaultsService'; export { DuplicateService } from './services/DuplicateService'; +export { FormDataService } from './services/FormDataService'; export { HeaderService } from './services/HeaderService'; export { MultipartService } from './services/MultipartService'; export { NoContentService } from './services/NoContentService'; @@ -5116,6 +5117,40 @@ export class DuplicateService { }" `; +exports[`v3 should generate: ./test/generated/v3/services/FormDataService.ts 1`] = ` +"/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { ModelWithString } from '../models/ModelWithString'; +import type { CancelablePromise } from '../core/CancelablePromise'; +import { request as __request } from '../core/request'; +import { OpenAPI } from '../core/OpenAPI'; + +export class FormDataService { + + /** + * @param parameter This is a reusable parameter + * @param formData A reusable request body + * @throws ApiError + */ + public static postFormDataService( + parameter?: string, + formData?: ModelWithString, + ): CancelablePromise { + return __request({ + method: 'POST', + path: \`/api/v\${OpenAPI.VERSION}/formData/\`, + query: { + 'parameter': parameter, + }, + formData: formData, + mediaType: 'multipart/form-data', + }); + } + +}" +`; + exports[`v3 should generate: ./test/generated/v3/services/HeaderService.ts 1`] = ` "/* istanbul ignore file */ /* tslint:disable */ @@ -5346,15 +5381,20 @@ import { OpenAPI } from '../core/OpenAPI'; export class RequestBodyService { /** + * @param parameter This is a reusable parameter * @param requestBody A reusable request body * @throws ApiError */ public static postRequestBodyService( + parameter?: string, requestBody?: ModelWithString, ): CancelablePromise { return __request({ method: 'POST', path: \`/api/v\${OpenAPI.VERSION}/requestBody/\`, + query: { + 'parameter': parameter, + }, body: requestBody, mediaType: 'application/json', }); diff --git a/test/spec/v3.json b/test/spec/v3.json index b49e8dfb..79357aa2 100644 --- a/test/spec/v3.json +++ b/test/spec/v3.json @@ -313,14 +313,13 @@ "tags": [ "RequestBody" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/requestBodies/SimpleRequestBody" - } - } + "parameters": [ + { + "$ref": "#/components/parameters/SimpleParameter" } + ], + "requestBody": { + "$ref": "#/components/requestBodies/SimpleRequestBody" } } }, @@ -329,14 +328,13 @@ "tags": [ "FormData" ], - "requestBody": { - "content": { - "multipart/form-data": { - "schema": { - "$ref": "#/components/requestBodies/SimpleRequestBody" - } - } + "parameters": [ + { + "$ref": "#/components/parameters/SimpleParameter" } + ], + "requestBody": { + "$ref": "#/components/requestBodies/SimpleFormData" } } }, @@ -1288,6 +1286,28 @@ } } } + }, + "SimpleFormData": { + "description": "A reusable request body", + "required": false, + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/ModelWithString" + } + } + } + } + }, + "parameters": { + "SimpleParameter": { + "description": "This is a reusable parameter", + "name": "parameter", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } }, "schemas": {