133 lines
3.3 KiB
TypeScript
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(),
|
|
},
|
|
},
|
|
},
|
|
];
|