kandimat/redaktions-app/src/backend/mutations/question.mock.ts
2021-05-29 00:00:10 +02:00

133 lines
3.3 KiB
TypeScript

import { MockedResponse } from "@apollo/client/testing";
import {
ADD_QUESTION,
AddQuestionResponse,
AddQuestionVariables,
DELETE_QUESTION,
DeleteQuestionPayload,
DeleteQuestionResponse,
DeleteQuestionVariables,
EDIT_QUESTION,
EditQuestionPayload,
EditQuestionResponse,
EditQuestionVariables,
} from "./question";
import { BasicQuestionResponse } from "../queries/question";
import { questionNodesMock } from "../queries/question.mock";
import { categoryNodesMock } from "../queries/category.mock";
const editQuestionVariables: EditQuestionVariables = {
id: "q1",
title: "New title for Question 1?",
description: "Further information for Q1",
categoryRowId: 1,
};
const getEditedQuestionMock = (): EditQuestionPayload | null => {
const originalQuestion = questionNodesMock.find(
(q) => q.id === editQuestionVariables.id
);
return originalQuestion
? {
question: {
...originalQuestion,
title:
editQuestionVariables.title === undefined
? originalQuestion.title
: editQuestionVariables.title,
description:
editQuestionVariables.description === undefined
? originalQuestion.description
: null,
categoryByCategoryRowId:
editQuestionVariables.categoryRowId === undefined
? originalQuestion.categoryByCategoryRowId
: categoryNodesMock.find(
(c) => c.rowId === editQuestionVariables.categoryRowId
) || null,
},
__typename: "UpdateQuestionPayload",
}
: null;
};
export const editQuestionMock: Array<MockedResponse<EditQuestionResponse>> = [
{
request: {
query: EDIT_QUESTION,
variables: editQuestionVariables,
},
result: {
data: {
updateQuestion: getEditedQuestionMock(),
},
},
},
];
const addQuestionVariables: AddQuestionVariables = {
title: "New question?",
description: "",
categoryRowId: null,
};
const addedQuestionMock: BasicQuestionResponse = {
id: `newQ`,
rowId: 4,
title: addQuestionVariables.title as string,
description: addQuestionVariables.description as string,
categoryByCategoryRowId:
categoryNodesMock.find(
(c) => c.rowId === editQuestionVariables.categoryRowId
) || null,
__typename: "Question",
};
export const addQuestionMock: Array<MockedResponse<AddQuestionResponse>> = [
{
request: {
query: ADD_QUESTION,
variables: addQuestionVariables,
},
result: {
data: {
createQuestion: {
question: addedQuestionMock,
__typename: "CreateQuestionPayload",
},
},
},
},
];
const deleteQuestionVariables: DeleteQuestionVariables = {
id: "q2",
};
const getDeletedQuestionMock = (): DeleteQuestionPayload | null => {
const questionToBeDeleted = questionNodesMock.find(
(q) => q.id === deleteQuestionVariables.id
);
return questionToBeDeleted
? {
question: questionToBeDeleted,
__typename: "DeleteQuestionPayload",
}
: null;
};
export const deleteQuestionMock: Array<MockedResponse<DeleteQuestionResponse>> =
[
{
request: {
query: DELETE_QUESTION,
variables: deleteQuestionVariables,
},
result: {
data: {
deleteQuestion: getDeletedQuestionMock(),
},
},
},
];