diff options
| author | Armand Philippot <git@armandphilippot.com> | 2023-12-11 18:47:59 +0100 |
|---|---|---|
| committer | Armand Philippot <git@armandphilippot.com> | 2023-12-11 18:55:07 +0100 |
| commit | 1c20e06da5a9817c15c80ca5a25cfacf8eeb0485 (patch) | |
| tree | 0162c375602baa70e51d38bdec143dc645628e96 /tests/msw/handlers/forms | |
| parent | 93db24b7f7650abac1bb7095026e3a1f367b0c0a (diff) | |
test(services): add tests for createComment mutation
* add Jest test
* add a Cypress test in article pages spec
Diffstat (limited to 'tests/msw/handlers/forms')
| -rw-r--r-- | tests/msw/handlers/forms/create-comment.handler.ts | 49 | ||||
| -rw-r--r-- | tests/msw/handlers/forms/index.ts | 3 |
2 files changed, 51 insertions, 1 deletions
diff --git a/tests/msw/handlers/forms/create-comment.handler.ts b/tests/msw/handlers/forms/create-comment.handler.ts new file mode 100644 index 0000000..d4c6003 --- /dev/null +++ b/tests/msw/handlers/forms/create-comment.handler.ts @@ -0,0 +1,49 @@ +import { type ExecutionResult, graphql } from 'graphql'; +import { HttpResponse } from 'msw'; +import type { + CreateCommentInput, + CreateCommentPayload, + CreateCommentResponse, +} from '../../../../src/services/graphql'; +import { wordpressAPI } from '../../instances'; +import { schema } from '../../schema'; + +export const createCommentHandler = wordpressAPI.mutation< + CreateCommentResponse, + Record<'input', CreateCommentInput> +>('CreateComment', async ({ query, variables }) => { + const pageParams = new URLSearchParams(window.location.search); + const isError = pageParams.get('error') === 'true'; + + if (isError) + return HttpResponse.json({ + data: { + createComment: { + clientMutationId: null, + comment: null, + success: false, + }, + }, + }); + + const { data, errors } = (await graphql({ + schema, + source: query, + variableValues: variables, + rootValue: { + createComment({ input }: typeof variables): CreateCommentPayload { + const { clientMutationId } = input; + + return { + clientMutationId, + comment: { + approved: true, + }, + success: true, + }; + }, + }, + })) as ExecutionResult<CreateCommentResponse>; + + return HttpResponse.json({ data, errors }); +}); diff --git a/tests/msw/handlers/forms/index.ts b/tests/msw/handlers/forms/index.ts index ce1e5b3..64be29b 100644 --- a/tests/msw/handlers/forms/index.ts +++ b/tests/msw/handlers/forms/index.ts @@ -1,3 +1,4 @@ +import { createCommentHandler } from './create-comment.handler'; import { sendEmailHandler } from './send-email.handler'; -export const formsHandlers = [sendEmailHandler]; +export const formsHandlers = [createCommentHandler, sendEmailHandler]; |
