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

120 lines
2.8 KiB
TypeScript

import { MockedResponse } from "@apollo/client/testing";
import {
ADD_CATEGORY,
AddCategoryResponse,
AddCategoryVariables,
DELETE_CATEGORY,
DeleteCategoryPayload,
DeleteCategoryResponse,
DeleteCategoryVariables,
EDIT_CATEGORY,
EditCategoryPayload,
EditCategoryResponse,
EditCategoryVariables,
} from "./category";
import { BasicCategoryResponse } from "../queries/category";
import { categoryNodesMock } from "../queries/category.mock";
const editCategoryVariables: EditCategoryVariables = {
id: "c1",
title: "New title for Category 1",
description: "Further information for C1",
};
const getEditedCategoryMock = (): EditCategoryPayload | null => {
const originalCategory = categoryNodesMock.find(
(c) => c.id === editCategoryVariables.id
);
return originalCategory
? {
category: {
...originalCategory,
title:
editCategoryVariables.title === undefined
? originalCategory.title
: editCategoryVariables.title,
description:
editCategoryVariables.description === undefined
? originalCategory.description
: null,
},
__typename: "UpdateCategoryPayload",
}
: null;
};
export const editCategoryMock: Array<MockedResponse<EditCategoryResponse>> = [
{
request: {
query: EDIT_CATEGORY,
variables: editCategoryVariables,
},
result: {
data: {
updateCategory: getEditedCategoryMock(),
},
},
},
];
const addCategoryVariables: AddCategoryVariables = {
title: "New category",
description: "",
};
const addedCategoryMock: BasicCategoryResponse = {
id: `newC`,
rowId: 3,
title: addCategoryVariables.title as string,
description: addCategoryVariables.description as string,
__typename: "Category",
};
export const addCategoryMock: Array<MockedResponse<AddCategoryResponse>> = [
{
request: {
query: ADD_CATEGORY,
variables: addCategoryVariables,
},
result: {
data: {
createCategory: {
category: addedCategoryMock,
__typename: "CreateCategoryPayload",
},
},
},
},
];
const deleteCategoryVariables: DeleteCategoryVariables = {
id: "c2",
};
const getDeletedCategoryMock = (): DeleteCategoryPayload | null => {
const categoryToBeDeleted = categoryNodesMock.find(
(q) => q.id === deleteCategoryVariables.id
);
return categoryToBeDeleted
? {
category: categoryToBeDeleted,
__typename: "DeleteCategoryPayload",
}
: null;
};
export const deleteCategoryMock: Array<MockedResponse<DeleteCategoryResponse>> =
[
{
request: {
query: DELETE_CATEGORY,
variables: deleteCategoryVariables,
},
result: {
data: {
deleteCategory: getDeletedCategoryMock(),
},
},
},
];