From 195f0fc107bd8b496a256d8b7ff33270d0abc7dc Mon Sep 17 00:00:00 2001 From: garcireyno Date: Mon, 24 Feb 2025 14:47:44 -0600 Subject: [PATCH] Fix for return values to match the method definition and be typescript-safe --- src/generator/k6Client.ts | 17 +++++++++++------ .../test-generator/generator.test.ts | 3 ++- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/generator/k6Client.ts b/src/generator/k6Client.ts index 930c1a3..b8beabc 100644 --- a/src/generator/k6Client.ts +++ b/src/generator/k6Client.ts @@ -32,9 +32,8 @@ function _setDefaultSchemaTitle(context: ContextSpecs) { } } -function _generateResponseTypeDefinition(response: GetterResponse): string { +function _getResponseDataType(response: GetterResponse): string { let responseDataType = '' - if ( response.definition.success && !['any', 'unknown'].includes(response.definition.success) @@ -44,9 +43,13 @@ function _generateResponseTypeDefinition(response: GetterResponse): string { responseDataType += 'ResponseBody' } + return responseDataType +} + +function _generateResponseTypeDefinition(response: GetterResponse): string { return `{ response: Response - data: ${responseDataType} + data: ${_getResponseDataType(response)} }` } @@ -233,16 +236,18 @@ const generateK6Implementation = ( const options = _getK6RequestOptions(verbOptions) + const responseDataType = _getResponseDataType(response) + return `${operationName}(\n ${toObjectString(props, 'implementation')} requestParameters?: Params): ${_generateResponseTypeDefinition(response)} {\n${bodyForm} ${urlGeneration} const mergedRequestParameters = this._mergeRequestParameters(requestParameters || {}, this.commonRequestParameters); const response = http.request(${options}); - let data; + let data: ${responseDataType}; try { - data = response.json(); + data = response.json() as unknown as ${responseDataType}; } catch { - data = response.body; + data = JSON.parse(response.body as string) as ${responseDataType}; } return { response, diff --git a/tests/functional-tests/test-generator/generator.test.ts b/tests/functional-tests/test-generator/generator.test.ts index ff7431e..9ce268c 100644 --- a/tests/functional-tests/test-generator/generator.test.ts +++ b/tests/functional-tests/test-generator/generator.test.ts @@ -27,7 +27,8 @@ const commonSubstringsForAllSDK = [ 'Do not edit manually', 'Service version', 'const mergedRequestParameters = this._mergeRequestParameters( requestParameters || {}, this.commonRequestParameters, );', - 'try { data = response.json(); } catch { data = response.body; }', + 'try { data = response.json() as unknown as', + 'catch { data = JSON.parse(response.body as string) as', 'return { response, data, };', ]