aboutsummaryrefslogtreecommitdiffstats
path: root/tests/msw/handlers
diff options
context:
space:
mode:
authorArmand Philippot <git@armandphilippot.com>2023-12-11 18:47:59 +0100
committerArmand Philippot <git@armandphilippot.com>2023-12-11 18:55:07 +0100
commit1c20e06da5a9817c15c80ca5a25cfacf8eeb0485 (patch)
tree0162c375602baa70e51d38bdec143dc645628e96 /tests/msw/handlers
parent93db24b7f7650abac1bb7095026e3a1f367b0c0a (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')
-rw-r--r--tests/msw/handlers/forms/create-comment.handler.ts49
-rw-r--r--tests/msw/handlers/forms/index.ts3
-rw-r--r--tests/msw/handlers/posts/post.handler.ts4
3 files changed, 54 insertions, 2 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];
diff --git a/tests/msw/handlers/posts/post.handler.ts b/tests/msw/handlers/posts/post.handler.ts
index 72f7b95..57f415b 100644
--- a/tests/msw/handlers/posts/post.handler.ts
+++ b/tests/msw/handlers/posts/post.handler.ts
@@ -14,7 +14,9 @@ export const postHandler = wordpressAPI.query<
source: query,
variableValues: variables,
rootValue: {
- post: wpPostsFixture.find((wpPost) => wpPost.slug === variables.slug),
+ post: wpPostsFixture.find((wpPost) =>
+ wpPost.slug.includes(variables.slug)
+ ),
},
})) as ExecutionResult<PostResponse>;