* WIP * Poc * Use cached root query + remove proloaded views state * Fix storybook test + fix codegen * Return default schema if token is absent, unauthenticated if token is invalid * Use enum instead of bool --------- Co-authored-by: Thomas Trompette <thomast@twenty.com> Co-authored-by: Charles Bochet <charles@twenty.com>
306 lines
8.9 KiB
TypeScript
306 lines
8.9 KiB
TypeScript
import { getOperationName } from '@apollo/client/utilities';
|
|
import { graphql, HttpResponse } from 'msw';
|
|
|
|
import { CREATE_EVENT } from '@/analytics/graphql/queries/createEvent';
|
|
import { GET_CLIENT_CONFIG } from '@/client-config/graphql/queries/getClientConfig';
|
|
import { FIND_MANY_OBJECT_METADATA_ITEMS } from '@/object-metadata/graphql/queries';
|
|
import { GET_CURRENT_USER_AND_VIEWS } from '@/users/graphql/queries/getCurrentUserAndViews';
|
|
import { REACT_APP_SERVER_BASE_URL } from '~/config';
|
|
import { mockedActivities } from '~/testing/mock-data/activities';
|
|
import { mockedCompaniesData } from '~/testing/mock-data/companies';
|
|
import { mockedClientConfig } from '~/testing/mock-data/config';
|
|
import { mockedPipelineSteps } from '~/testing/mock-data/pipeline-steps';
|
|
import { mockedUsersData } from '~/testing/mock-data/users';
|
|
import { mockWorkspaceMembers } from '~/testing/mock-data/workspace-members';
|
|
|
|
import { mockedObjectMetadataItems } from './mock-data/metadata';
|
|
import { mockedPeopleData } from './mock-data/people';
|
|
import { mockedViewFieldsData } from './mock-data/view-fields';
|
|
import { mockedViewsData } from './mock-data/views';
|
|
|
|
const metadataGraphql = graphql.link(`${REACT_APP_SERVER_BASE_URL}/metadata`);
|
|
|
|
export const graphqlMocks = {
|
|
handlers: [
|
|
graphql.query(getOperationName(GET_CURRENT_USER_AND_VIEWS) ?? '', () => {
|
|
return HttpResponse.json({
|
|
data: {
|
|
currentUser: mockedUsersData[0],
|
|
views: {
|
|
edges: mockedViewsData.map((view) => ({
|
|
node: view,
|
|
cursor: null,
|
|
})),
|
|
pageInfo: {
|
|
hasNextPage: false,
|
|
hasPreviousPage: false,
|
|
startCursor: null,
|
|
endCursor: null,
|
|
},
|
|
},
|
|
},
|
|
});
|
|
}),
|
|
graphql.mutation(getOperationName(CREATE_EVENT) ?? '', () => {
|
|
return HttpResponse.json({
|
|
data: {
|
|
createEvent: { success: 1, __typename: 'Event' },
|
|
},
|
|
});
|
|
}),
|
|
graphql.query(getOperationName(GET_CLIENT_CONFIG) ?? '', () => {
|
|
return HttpResponse.json({
|
|
data: {
|
|
clientConfig: mockedClientConfig,
|
|
},
|
|
});
|
|
}),
|
|
metadataGraphql.query(
|
|
getOperationName(FIND_MANY_OBJECT_METADATA_ITEMS) ?? '',
|
|
() => {
|
|
return HttpResponse.json({
|
|
data: { objects: mockedObjectMetadataItems },
|
|
});
|
|
},
|
|
),
|
|
graphql.query('FindManyViews', ({ variables }) => {
|
|
const objectMetadataId = variables.filter.objectMetadataId.eq;
|
|
const viewType = variables.filter.type.eq;
|
|
|
|
return HttpResponse.json({
|
|
data: {
|
|
views: {
|
|
edges: mockedViewsData
|
|
.filter(
|
|
(view) =>
|
|
view.objectMetadataId === objectMetadataId &&
|
|
view.type === viewType,
|
|
)
|
|
.map((view) => ({
|
|
node: view,
|
|
cursor: null,
|
|
})),
|
|
pageInfo: {
|
|
hasNextPage: false,
|
|
hasPreviousPage: false,
|
|
startCursor: null,
|
|
endCursor: null,
|
|
},
|
|
},
|
|
},
|
|
});
|
|
}),
|
|
graphql.query('FindManyViewFields', ({ variables }) => {
|
|
const viewId = variables.filter.view.eq;
|
|
|
|
return HttpResponse.json({
|
|
data: {
|
|
viewFields: {
|
|
edges: mockedViewFieldsData
|
|
.filter((viewField) => viewField.viewId === viewId)
|
|
.map((viewField) => ({
|
|
node: viewField,
|
|
cursor: null,
|
|
})),
|
|
pageInfo: {
|
|
hasNextPage: false,
|
|
hasPreviousPage: false,
|
|
startCursor: null,
|
|
endCursor: null,
|
|
},
|
|
},
|
|
},
|
|
});
|
|
}),
|
|
graphql.query('FindManyCompanies', () => {
|
|
return HttpResponse.json({
|
|
data: {
|
|
companies: {
|
|
edges: mockedCompaniesData.map((company) => ({
|
|
node: {
|
|
...company,
|
|
favorites: {
|
|
edges: [],
|
|
__typename: 'FavoriteConnection',
|
|
},
|
|
attachments: {
|
|
edges: [],
|
|
__typename: 'AttachmentConnection',
|
|
},
|
|
people: {
|
|
edges: [],
|
|
__typename: 'PersonConnection',
|
|
},
|
|
opportunities: {
|
|
edges: [],
|
|
__typename: 'OpportunityConnection',
|
|
},
|
|
activityTargets: {
|
|
edges: [],
|
|
__typename: 'ActivityTargetConnection',
|
|
},
|
|
},
|
|
cursor: null,
|
|
})),
|
|
pageInfo: {
|
|
hasNextPage: false,
|
|
hasPreviousPage: false,
|
|
startCursor: null,
|
|
endCursor: null,
|
|
},
|
|
},
|
|
},
|
|
});
|
|
}),
|
|
graphql.query('FindManyPeople', () => {
|
|
return HttpResponse.json({
|
|
data: {
|
|
people: {
|
|
edges: mockedPeopleData.map((person) => ({
|
|
node: person,
|
|
cursor: null,
|
|
})),
|
|
pageInfo: {
|
|
hasNextPage: false,
|
|
hasPreviousPage: false,
|
|
startCursor: null,
|
|
endCursor: null,
|
|
},
|
|
},
|
|
},
|
|
});
|
|
}),
|
|
graphql.query('FindManyActivities', () => {
|
|
return HttpResponse.json({
|
|
data: {
|
|
activities: {
|
|
edges: mockedActivities.map(({ activityTargets, ...rest }) => ({
|
|
node: {
|
|
...rest,
|
|
activityTargets: {
|
|
edges: activityTargets.map((t) => ({ node: t })),
|
|
},
|
|
attachments: {
|
|
edges: [],
|
|
},
|
|
},
|
|
cursor: null,
|
|
})),
|
|
pageInfo: {
|
|
hasNextPage: false,
|
|
hasPreviousPage: false,
|
|
startCursor: null,
|
|
endCursor: null,
|
|
},
|
|
},
|
|
},
|
|
});
|
|
}),
|
|
graphql.query('FindManyFavorites', () => {
|
|
return HttpResponse.json({
|
|
data: {
|
|
favorites: {
|
|
edges: [],
|
|
pageInfo: {
|
|
hasNextPage: false,
|
|
hasPreviousPage: false,
|
|
startCursor: null,
|
|
endCursor: null,
|
|
},
|
|
},
|
|
},
|
|
});
|
|
}),
|
|
graphql.query('FindManyPipelineSteps', () => {
|
|
return HttpResponse.json({
|
|
data: {
|
|
pipelineSteps: {
|
|
edges: mockedPipelineSteps.map((step) => ({
|
|
node: {
|
|
...step,
|
|
opportunities: {
|
|
edges: [],
|
|
},
|
|
},
|
|
cursor: null,
|
|
})),
|
|
pageInfo: {
|
|
hasNextPage: false,
|
|
hasPreviousPage: false,
|
|
startCursor: null,
|
|
endCursor: null,
|
|
},
|
|
},
|
|
},
|
|
});
|
|
}),
|
|
graphql.query('FindManyOpportunities', () => {
|
|
return HttpResponse.json({
|
|
data: {
|
|
opportunities: {
|
|
edges: [],
|
|
pageInfo: {
|
|
hasNextPage: false,
|
|
hasPreviousPage: false,
|
|
startCursor: null,
|
|
endCursor: null,
|
|
},
|
|
},
|
|
},
|
|
});
|
|
}),
|
|
graphql.query('FindManyWorkspaceMembers', () => {
|
|
return HttpResponse.json({
|
|
data: {
|
|
workspaceMembers: {
|
|
edges: mockWorkspaceMembers.map((member) => ({
|
|
node: {
|
|
...member,
|
|
messageParticipants: {
|
|
edges: [],
|
|
__typename: 'MessageParticipantConnection',
|
|
},
|
|
authoredAttachments: {
|
|
edges: [],
|
|
__typename: 'AttachmentConnection',
|
|
},
|
|
authoredComments: {
|
|
edges: [],
|
|
__typename: 'CommentConnection',
|
|
},
|
|
accountOwnerForCompanies: {
|
|
edges: [],
|
|
__typename: 'CompanyConnection',
|
|
},
|
|
authoredActivities: {
|
|
edges: [],
|
|
__typename: 'ActivityConnection',
|
|
},
|
|
favorites: {
|
|
edges: [],
|
|
__typename: 'FavoriteConnection',
|
|
},
|
|
connectedAccounts: {
|
|
edges: [],
|
|
__typename: 'ConnectedAccountConnection',
|
|
},
|
|
assignedActivities: {
|
|
edges: [],
|
|
__typename: 'ActivityConnection',
|
|
},
|
|
},
|
|
cursor: null,
|
|
})),
|
|
pageInfo: {
|
|
hasNextPage: false,
|
|
hasPreviousPage: false,
|
|
startCursor: null,
|
|
endCursor: null,
|
|
},
|
|
},
|
|
},
|
|
});
|
|
}),
|
|
],
|
|
};
|