Files
twenty/front/src/testing/graphqlMocks.ts
Thaïs 88c6d0da2a feat: add Opportunities Views dropdown (#1503)
* feat: add Opportunities Views dropdown

Closes #1454

* feat: persist Opportunities view filters and sorts

Closes #1456

* feat: create/edit/delete Opportunities views

Closes #1455, Closes #1457

* fix: add missing Opportunities view mock

---------

Co-authored-by: Charles Bochet <charlesBochet@users.noreply.github.com>
2023-09-10 19:07:14 -07:00

284 lines
8.0 KiB
TypeScript

import { getOperationName } from '@apollo/client/utilities';
import { graphql } from 'msw';
import { CREATE_ACTIVITY_WITH_COMMENT } from '@/activities/graphql/mutations/createActivityWithComment';
import { GET_ACTIVITIES } from '@/activities/graphql/queries/getActivities';
import { CREATE_EVENT } from '@/analytics/graphql/queries/createEvent';
import { GET_CLIENT_CONFIG } from '@/client-config/graphql/queries/getClientConfig';
import { GET_COMPANIES } from '@/companies/graphql/queries/getCompanies';
import { UPDATE_ONE_PERSON } from '@/people/graphql/mutations/updateOnePerson';
import { GET_PEOPLE } from '@/people/graphql/queries/getPeople';
import { GET_PERSON } from '@/people/graphql/queries/getPerson';
import { GET_PIPELINE_PROGRESS } from '@/pipeline/graphql/queries/getPipelineProgress';
import { GET_PIPELINES } from '@/pipeline/graphql/queries/getPipelines';
import { SEARCH_ACTIVITY_QUERY } from '@/search/graphql/queries/searchActivityQuery';
import { SEARCH_COMPANY_QUERY } from '@/search/graphql/queries/searchCompanyQuery';
import { SEARCH_PEOPLE_QUERY } from '@/search/graphql/queries/searchPeopleQuery';
import { SEARCH_USER_QUERY } from '@/search/graphql/queries/searchUserQuery';
import { GET_CURRENT_USER } from '@/users/graphql/queries/getCurrentUser';
import { GET_VIEW_FIELDS } from '@/views/graphql/queries/getViewFields';
import { GET_VIEWS } from '@/views/graphql/queries/getViews';
import {
GetCompaniesQuery,
GetPeopleQuery,
GetPersonQuery,
SearchActivityQuery,
SearchCompanyQuery,
SearchPeopleQuery,
SearchUserQuery,
ViewType,
} from '~/generated/graphql';
import { mockedActivities, mockedTasks } from './mock-data/activities';
import {
mockedCompaniesData,
mockedCompanyBoardViews,
mockedCompanyTableColumns,
mockedCompanyTableViews,
} from './mock-data/companies';
import {
mockedPeopleData,
mockedPersonTableColumns,
mockedPersonTableViews,
} from './mock-data/people';
import { mockedPipelineProgressData } from './mock-data/pipeline-progress';
import { mockedPipelinesData } from './mock-data/pipelines';
import { mockedUsersData } from './mock-data/users';
import {
fetchOneFromData,
filterAndSortData,
updateOneFromData,
} from './mock-data';
export const graphqlMocks = [
graphql.query(getOperationName(GET_COMPANIES) ?? '', (req, res, ctx) => {
const returnedMockedData = filterAndSortData<
GetCompaniesQuery['companies'][0]
>(
mockedCompaniesData,
req.variables.where,
req.variables.orderBy,
req.variables.limit,
);
return res(
ctx.data({
companies: returnedMockedData,
}),
);
}),
graphql.query(
getOperationName(SEARCH_COMPANY_QUERY) ?? '',
(req, res, ctx) => {
const returnedMockedData = filterAndSortData<
SearchCompanyQuery['searchResults'][0]
>(
mockedCompaniesData,
req.variables.where,
Array.isArray(req.variables.orderBy)
? req.variables.orderBy
: [req.variables.orderBy],
req.variables.limit,
);
return res(
ctx.data({
searchResults: returnedMockedData,
}),
);
},
),
graphql.query(
getOperationName(SEARCH_PEOPLE_QUERY) ?? '',
(req, res, ctx) => {
const returnedMockedData = filterAndSortData<
SearchPeopleQuery['searchResults'][0]
>(
mockedPeopleData,
req.variables.where,
Array.isArray(req.variables.orderBy)
? req.variables.orderBy
: [req.variables.orderBy],
req.variables.limit,
);
return res(
ctx.data({
searchResults: returnedMockedData,
}),
);
},
),
graphql.query(getOperationName(SEARCH_USER_QUERY) ?? '', (req, res, ctx) => {
const returnedMockedData = filterAndSortData<
SearchUserQuery['searchResults'][0]
>(
mockedUsersData,
req.variables.where,
req.variables.orderBy,
req.variables.limit,
);
return res(
ctx.data({
searchResults: returnedMockedData,
}),
);
}),
graphql.query(
getOperationName(SEARCH_ACTIVITY_QUERY) ?? '',
(req, res, ctx) => {
const returnedMockedData = filterAndSortData<
SearchActivityQuery['searchResults'][0]
>(
mockedActivities,
req.variables.where,
Array.isArray(req.variables.orderBy)
? req.variables.orderBy
: [req.variables.orderBy],
req.variables.limit,
);
return res(
ctx.data({
searchResults: returnedMockedData,
}),
);
},
),
graphql.query(getOperationName(GET_CURRENT_USER) ?? '', (req, res, ctx) => {
return res(
ctx.data({
currentUser: mockedUsersData[0],
}),
);
}),
graphql.query(getOperationName(GET_PERSON) ?? '', (req, res, ctx) => {
const returnedMockedData = fetchOneFromData<
GetPersonQuery['findUniquePerson']
>(mockedPeopleData, req.variables.id);
return res(
ctx.data({
findUniquePerson: returnedMockedData,
}),
);
}),
graphql.query(getOperationName(GET_PEOPLE) ?? '', (req, res, ctx) => {
const returnedMockedData = filterAndSortData<GetPeopleQuery['people'][0]>(
mockedPeopleData,
req.variables.where,
req.variables.orderBy,
req.variables.limit,
);
return res(
ctx.data({
people: returnedMockedData,
}),
);
}),
graphql.mutation(
getOperationName(UPDATE_ONE_PERSON) ?? '',
(req, res, ctx) => {
return res(
ctx.data({
updateOnePerson: updateOneFromData(
mockedPeopleData,
req.variables.where.id,
req.variables,
),
}),
);
},
),
graphql.query(getOperationName(GET_PIPELINES) ?? '', (req, res, ctx) => {
return res(
ctx.data({
findManyPipeline: mockedPipelinesData,
}),
);
}),
graphql.query(
getOperationName(GET_PIPELINE_PROGRESS) ?? '',
(req, res, ctx) => {
return res(
ctx.data({
findManyPipelineProgress: mockedPipelineProgressData,
}),
);
},
),
graphql.mutation(getOperationName(CREATE_EVENT) ?? '', (req, res, ctx) => {
return res(
ctx.data({
createEvent: { success: 1, __typename: 'Event' },
}),
);
}),
graphql.query(getOperationName(GET_CLIENT_CONFIG) ?? '', (req, res, ctx) => {
return res(
ctx.data({
clientConfig: {
signInPrefilled: true,
debugMode: false,
authProviders: { google: true, password: true, magicLink: false },
telemetry: { enabled: false, anonymizationEnabled: true },
support: {
supportDriver: 'front',
supportFrontChatId: null,
},
},
}),
);
}),
graphql.query(getOperationName(GET_ACTIVITIES) ?? '', (req, res, ctx) => {
return res(
ctx.data({
findManyActivities:
req?.variables?.where?.type?.equals === 'Task'
? mockedTasks
: mockedActivities,
}),
);
}),
graphql.query(getOperationName(GET_VIEWS) ?? '', (req, res, ctx) => {
const {
where: {
objectId: { equals: objectId },
type: { equals: type },
},
} = req.variables;
return res(
ctx.data({
views:
objectId === 'person'
? mockedPersonTableViews
: type === ViewType.Table
? mockedCompanyTableViews
: mockedCompanyBoardViews,
}),
);
}),
graphql.query(getOperationName(GET_VIEW_FIELDS) ?? '', (req, res, ctx) => {
const {
where: {
viewId: { equals: viewId },
},
} = req.variables;
return res(
ctx.data({
viewFields:
viewId === mockedCompanyTableViews[0].id
? mockedCompanyTableColumns
: mockedPersonTableColumns,
}),
);
}),
graphql.mutation(
getOperationName(CREATE_ACTIVITY_WITH_COMMENT) ?? '',
(req, res, ctx) => {
return res(
ctx.data({
createOneActivity: mockedTasks[0],
}),
);
},
),
];