From 1c39aab8498b52250fa2c878bfc9f8ca1eba5206 Mon Sep 17 00:00:00 2001 From: Shodai Suzuki Date: Sat, 10 Feb 2024 21:46:16 +0900 Subject: [PATCH] fix(msw): refactor to include duplication of mock imports in mocks in `split` and `split-tags` modes (#1214) * chore: not mix hooks imports with mock imports * chore: refactoring to define variables so that return values are clear * chore: change the order of variable definitions to align with return values * fix: return type definitions are taken from `response.imports` --- packages/core/src/writers/split-mode.ts | 5 +---- packages/core/src/writers/split-tags-mode.ts | 5 +---- packages/mock/src/msw/index.ts | 15 +++++++++++---- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/packages/core/src/writers/split-mode.ts b/packages/core/src/writers/split-mode.ts index 6c987d6d1..38fc9a2e6 100644 --- a/packages/core/src/writers/split-mode.ts +++ b/packages/core/src/writers/split-mode.ts @@ -62,10 +62,7 @@ export const writeSplitMode = async ({ mockData += builder.importsMock({ implementation: implementationMock, - imports: [ - { exports: imports, dependency: relativeSchemasPath }, - { exports: importsMock, dependency: relativeSchemasPath }, - ], + imports: [{ exports: importsMock, dependency: relativeSchemasPath }], specsName, hasSchemaDir: !!output.schemas, isAllowSyntheticDefaultImports, diff --git a/packages/core/src/writers/split-tags-mode.ts b/packages/core/src/writers/split-tags-mode.ts index bce8c5064..23bb64fa7 100644 --- a/packages/core/src/writers/split-tags-mode.ts +++ b/packages/core/src/writers/split-tags-mode.ts @@ -75,10 +75,7 @@ export const writeSplitTagsMode = async ({ }); mockData += builder.importsMock({ implementation: implementationMock, - imports: [ - ...importsForBuilder, - { exports: importsMock, dependency: relativeSchemasPath }, - ], + imports: [{ exports: importsMock, dependency: relativeSchemasPath }], specsName, hasSchemaDir: !!output.schemas, isAllowSyntheticDefaultImports, diff --git a/packages/mock/src/msw/index.ts b/packages/mock/src/msw/index.ts index f5c01d937..41d781ca8 100644 --- a/packages/mock/src/msw/index.ts +++ b/packages/mock/src/msw/index.ts @@ -80,6 +80,10 @@ export const generateMSW = ( const functionName = `get${pascal(operationId)}Mock`; const handlerName = `get${pascal(operationId)}MockHandler`; + const mockImplementation = isReturnHttpResponse + ? `export const ${functionName} = (${isResponseOverridable ? `overrideResponse: any = {}` : ''}): ${returnType} => (${value})\n\n` + : ''; + const handlerImplementation = ` export const ${handlerName} = (${isReturnHttpResponse && !isTextPlain ? `overrideResponse?: ${returnType}` : ''}) => { return http.${verb}('${route}', async () => { @@ -101,14 +105,17 @@ export const ${handlerName} = (${isReturnHttpResponse && !isTextPlain ? `overrid }) }\n`; + const includeResponseImports = + isReturnHttpResponse && !isTextPlain + ? [...imports, ...response.imports] + : imports; + return { implementation: { - function: isReturnHttpResponse - ? `export const ${functionName} = (${isResponseOverridable ? `overrideResponse: any = {}` : ''}): ${returnType} => (${value})\n\n` - : '', + function: mockImplementation, handlerName: handlerName, handler: handlerImplementation, }, - imports, + imports: includeResponseImports, }; };