From 73d6f31bd5c238acd8998a589983e8f7678e2f9a Mon Sep 17 00:00:00 2001 From: Stijn Van Hulle Date: Sun, 10 Mar 2024 22:59:31 +0100 Subject: [PATCH] chore: add test cases for `variablesType` --- .../src/components/Mutation.test.tsx | 121 +++++++++++++----- .../__snapshots__/Mutation/useCreatePets.ts | 46 +++++++ .../{Pets.ts => useCreatePetsMutate.ts} | 0 3 files changed, 133 insertions(+), 34 deletions(-) create mode 100644 packages/swagger-tanstack-query/src/components/__snapshots__/Mutation/useCreatePets.ts rename packages/swagger-tanstack-query/src/components/__snapshots__/Mutation/{Pets.ts => useCreatePetsMutate.ts} (100%) diff --git a/packages/swagger-tanstack-query/src/components/Mutation.test.tsx b/packages/swagger-tanstack-query/src/components/Mutation.test.tsx index ac467d9db..6a55e8b62 100644 --- a/packages/swagger-tanstack-query/src/components/Mutation.test.tsx +++ b/packages/swagger-tanstack-query/src/components/Mutation.test.tsx @@ -32,41 +32,94 @@ describe('', async () => { return name } - const options: GetOperationGeneratorOptions = { - framework: 'react', - infinite: undefined, - suspense: undefined, - dataReturnType: 'data', - pathParamsType: 'inline', - templates: { - query: Query.templates, - queryKey: QueryKey.templates, - queryOptions: QueryOptions.templates, - mutation: Mutation.templates, - }, - client: { - importPath: '@kubb/swagger-client/client', - }, - parser: undefined, - query: {}, - mutate: { variablesType: 'mutate' }, - } + test('pets with veriableType `hook`', async () => { + const options: GetOperationGeneratorOptions = { + framework: 'react', + infinite: undefined, + suspense: undefined, + dataReturnType: 'data', + pathParamsType: 'inline', + templates: { + query: Query.templates, + queryKey: QueryKey.templates, + queryOptions: QueryOptions.templates, + mutation: Mutation.templates, + }, + client: { + importPath: '@kubb/swagger-client/client', + }, + parser: undefined, + query: {}, + mutate: { variablesType: 'hook' }, + } + + const plugin = { options } as Plugin + const og = await new OperationGenerator( + options, + { + oas, + exclude: [], + include: undefined, + pluginManager: mockedPluginManager, + plugin, + contentType: undefined, + override: undefined, + }, + ) + + const operation = oas.operation('/pets/{uuid}', 'post') + const context: AppContextProps = { meta: { pluginManager: mockedPluginManager, plugin } } + + const Component = () => { + return ( + og.getSchemas(...props)}> + + + + + ) + } + const root = createRootServer({ logger: mockedPluginManager.logger }) + const output = await root.renderToString(, context) + + expect(output).toMatchFileSnapshot('./__snapshots__/Mutation/useCreatePets.ts') + }) + + test('pets with veriableType `mutate`', async () => { + const options: GetOperationGeneratorOptions = { + framework: 'react', + infinite: undefined, + suspense: undefined, + dataReturnType: 'data', + pathParamsType: 'inline', + templates: { + query: Query.templates, + queryKey: QueryKey.templates, + queryOptions: QueryOptions.templates, + mutation: Mutation.templates, + }, + client: { + importPath: '@kubb/swagger-client/client', + }, + parser: undefined, + query: {}, + mutate: { variablesType: 'mutate' }, + } - const plugin = { options } as Plugin - const og = await new OperationGenerator( - options, - { - oas, - exclude: [], - include: undefined, - pluginManager: mockedPluginManager, - plugin, - contentType: undefined, - override: undefined, - }, - ) + const plugin = { options } as Plugin + const og = await new OperationGenerator( + options, + { + oas, + exclude: [], + include: undefined, + pluginManager: mockedPluginManager, + plugin, + contentType: undefined, + override: undefined, + }, + ) - test('pets', async () => { const operation = oas.operation('/pets/{uuid}', 'post') const context: AppContextProps = { meta: { pluginManager: mockedPluginManager, plugin } } @@ -82,6 +135,6 @@ describe('', async () => { const root = createRootServer({ logger: mockedPluginManager.logger }) const output = await root.renderToString(, context) - expect(output).toMatchFileSnapshot('./__snapshots__/Mutation/Pets.ts') + expect(output).toMatchFileSnapshot('./__snapshots__/Mutation/useCreatePetsMutate.ts') }) }) diff --git a/packages/swagger-tanstack-query/src/components/__snapshots__/Mutation/useCreatePets.ts b/packages/swagger-tanstack-query/src/components/__snapshots__/Mutation/useCreatePets.ts new file mode 100644 index 000000000..a518df96b --- /dev/null +++ b/packages/swagger-tanstack-query/src/components/__snapshots__/Mutation/useCreatePets.ts @@ -0,0 +1,46 @@ +type CreatePetsClient = typeof client +type CreatePets = { + data: CreatePetsMutationResponse + error: never + request: CreatePetsMutationRequest + pathParams: CreatePetsPathParams + queryParams: CreatePetsQueryParams + headerParams: CreatePetsHeaderParams + response: CreatePetsMutationResponse + client: { + parameters: Partial[0]> + return: Awaited> + } +} + +/** + * @summary Create a pet + * @link /pets/:uuid */ + +export function useCreatePets( + uuid: CreatePetsPathParams['uuid'], + headers: CreatePets['headerParams'], + params?: CreatePets['queryParams'], + options: { + mutation?: UseMutationOptions + client?: CreatePets['client']['parameters'] + } = {}, +): UseMutationResult { + const { mutation: mutationOptions, client: clientOptions = {} } = options ?? {} + + return useMutation({ + mutationFn: async (data) => { + const res = await client({ + method: 'post', + url: `/pets/${uuid}`, + params, + data, + headers: { ...headers, ...clientOptions.headers }, + ...clientOptions, + }) + + return res.data + }, + ...mutationOptions, + }) +} diff --git a/packages/swagger-tanstack-query/src/components/__snapshots__/Mutation/Pets.ts b/packages/swagger-tanstack-query/src/components/__snapshots__/Mutation/useCreatePetsMutate.ts similarity index 100% rename from packages/swagger-tanstack-query/src/components/__snapshots__/Mutation/Pets.ts rename to packages/swagger-tanstack-query/src/components/__snapshots__/Mutation/useCreatePetsMutate.ts