Fix more tests 2 (#18293)
## Summary - Migrate more hand-written test mocks to auto-generated data from a real Twenty instance - Add generators for views, billing plans, API keys; extend record generator for workspace members, favorites, connected accounts, calendar events - Remove 9 hand-written mock files replaced by generated equivalents - Update 16 test/story files to use generated data - Fix WorkflowEditActionEmailBase story assertion to match configured recipient email ## Test plan - [x] Lint, typecheck, unit tests pass - [ ] Storybook tests pass in CI
This commit is contained in:
@@ -6,16 +6,15 @@ import { TRACK_ANALYTICS } from '@/analytics/graphql/queries/track';
|
||||
import { FIND_MANY_OBJECT_METADATA_ITEMS } from '@/object-metadata/graphql/queries';
|
||||
import { GET_CURRENT_USER } from '@/users/graphql/queries/getCurrentUser';
|
||||
import { REACT_APP_SERVER_BASE_URL } from '~/config';
|
||||
import { mockedApiKeys } from '~/testing/mock-data/api-keys';
|
||||
import { mockedClientConfig } from '~/testing/mock-data/config';
|
||||
import { mockedFavoritesData } from '~/testing/mock-data/favorite';
|
||||
import { mockedFavoriteRecords } from '~/testing/mock-data/generated/data/favorites/mock-favorites-data';
|
||||
import { mockedFavoriteFoldersData } from '~/testing/mock-data/favorite-folders';
|
||||
import { mockedNoteRecords } from '~/testing/mock-data/generated/data/notes/mock-notes-data';
|
||||
import { mockedPersonRecords } from '~/testing/mock-data/generated/data/people/mock-people-data';
|
||||
import { mockedPublicWorkspaceDataBySubdomain } from '~/testing/mock-data/publicWorkspaceDataBySubdomain';
|
||||
import { mockedUserData } from '~/testing/mock-data/users';
|
||||
import { mockedViewsData } from '~/testing/mock-data/views';
|
||||
import { mockWorkspaceMembers } from '~/testing/mock-data/workspace-members';
|
||||
import { mockedCoreViews } from '~/testing/mock-data/generated/metadata/views/mock-views-data';
|
||||
import { mockedWorkspaceMemberRecords } from '~/testing/mock-data/generated/data/workspaceMembers/mock-workspaceMembers-data';
|
||||
|
||||
import { GET_PUBLIC_WORKSPACE_DATA_BY_DOMAIN } from '@/auth/graphql/queries/getPublicWorkspaceDataByDomain';
|
||||
import { LIST_PLANS } from '@/billing/graphql/queries/listPlans';
|
||||
@@ -38,7 +37,7 @@ import { getConnectionTypename } from '@/object-record/cache/utils/getConnection
|
||||
import { getEdgeTypename } from '@/object-record/cache/utils/getEdgeTypename';
|
||||
import { getEmptyPageInfo } from '@/object-record/cache/utils/getEmptyPageInfo';
|
||||
import { getRecordFromRecordNode } from '@/object-record/cache/utils/getRecordFromRecordNode';
|
||||
import { mockedViewFieldsData } from './mock-data/view-fields';
|
||||
import { mockedApiKeys } from '~/testing/mock-data/generated/metadata/api-keys/mock-api-keys-data';
|
||||
|
||||
const peopleMock = [...mockedPersonRecords];
|
||||
const companiesMock = [...mockedCompanyRecords];
|
||||
@@ -289,34 +288,29 @@ export const graphqlMocks = {
|
||||
const objectMetadataId = variables.filter?.objectMetadataId?.eq;
|
||||
const viewType = variables.filter?.type?.eq;
|
||||
|
||||
const filtered = mockedCoreViews.filter(
|
||||
(view) =>
|
||||
(isDefined(objectMetadataId)
|
||||
? view?.objectMetadataId === objectMetadataId
|
||||
: true) && (isDefined(viewType) ? view?.type === viewType : true),
|
||||
);
|
||||
|
||||
return HttpResponse.json({
|
||||
data: {
|
||||
views: {
|
||||
edges: mockedViewsData
|
||||
.filter(
|
||||
(view) =>
|
||||
(isDefined(objectMetadataId)
|
||||
? view?.objectMetadataId === objectMetadataId
|
||||
: true) &&
|
||||
(isDefined(viewType) ? view?.type === viewType : true),
|
||||
)
|
||||
.map((view) => ({
|
||||
node: {
|
||||
...view,
|
||||
viewFields: {
|
||||
edges: mockedViewFieldsData
|
||||
.filter((viewField) => viewField.viewId === view.id)
|
||||
.map((viewField) => ({
|
||||
node: viewField,
|
||||
cursor: null,
|
||||
})),
|
||||
totalCount: mockedViewFieldsData.filter(
|
||||
(viewField) => viewField.viewId === view.id,
|
||||
).length,
|
||||
},
|
||||
edges: filtered.map((view) => ({
|
||||
node: {
|
||||
...view,
|
||||
viewFields: {
|
||||
edges: view.viewFields.map((viewField) => ({
|
||||
node: viewField,
|
||||
cursor: null,
|
||||
})),
|
||||
totalCount: view.viewFields.length,
|
||||
},
|
||||
cursor: null,
|
||||
})),
|
||||
},
|
||||
cursor: null,
|
||||
})),
|
||||
pageInfo: {
|
||||
hasNextPage: false,
|
||||
hasPreviousPage: false,
|
||||
@@ -330,61 +324,26 @@ export const graphqlMocks = {
|
||||
graphql.query('SearchWorkspaceMembers', () => {
|
||||
return HttpResponse.json({
|
||||
data: {
|
||||
searchWorkspaceMembers: {
|
||||
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,
|
||||
})),
|
||||
},
|
||||
searchWorkspaceMembers: wrapRecordsAsConnection(
|
||||
'workspaceMember',
|
||||
mockedWorkspaceMemberRecords as Record<string, unknown>[],
|
||||
),
|
||||
},
|
||||
});
|
||||
}),
|
||||
graphql.query('FindManyViewFields', ({ variables }) => {
|
||||
const viewId = variables.filter.view.eq;
|
||||
|
||||
const matchingView = mockedCoreViews.find((view) => view.id === viewId);
|
||||
const viewFields = matchingView?.viewFields ?? [];
|
||||
|
||||
return HttpResponse.json({
|
||||
data: {
|
||||
viewFields: {
|
||||
edges: mockedViewFieldsData
|
||||
.filter((viewField) => viewField.viewId === viewId)
|
||||
.map((viewField) => ({
|
||||
node: viewField,
|
||||
cursor: null,
|
||||
})),
|
||||
edges: viewFields.map((viewField) => ({
|
||||
node: viewField,
|
||||
cursor: null,
|
||||
})),
|
||||
pageInfo: {
|
||||
hasNextPage: false,
|
||||
hasPreviousPage: false,
|
||||
@@ -472,16 +431,10 @@ export const graphqlMocks = {
|
||||
return HttpResponse.json({
|
||||
data: {
|
||||
favorites: {
|
||||
edges: mockedFavoritesData.map((favorite) => ({
|
||||
node: favorite,
|
||||
cursor: null,
|
||||
})),
|
||||
pageInfo: {
|
||||
hasNextPage: false,
|
||||
hasPreviousPage: false,
|
||||
startCursor: null,
|
||||
endCursor: null,
|
||||
},
|
||||
...wrapRecordsAsConnection(
|
||||
'favorite',
|
||||
mockedFavoriteRecords as Record<string, unknown>[],
|
||||
),
|
||||
},
|
||||
},
|
||||
});
|
||||
@@ -504,52 +457,10 @@ export const graphqlMocks = {
|
||||
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,
|
||||
},
|
||||
},
|
||||
workspaceMembers: wrapRecordsAsConnection(
|
||||
'workspaceMember',
|
||||
mockedWorkspaceMemberRecords as Record<string, unknown>[],
|
||||
),
|
||||
},
|
||||
});
|
||||
}),
|
||||
@@ -612,11 +523,7 @@ export const graphqlMocks = {
|
||||
metadataGraphql.query('GetApiKeys', () => {
|
||||
return HttpResponse.json({
|
||||
data: {
|
||||
apiKeys: mockedApiKeys.map((apiKey) => ({
|
||||
__typename: 'ApiKey',
|
||||
...apiKey,
|
||||
revokedAt: null,
|
||||
})),
|
||||
apiKeys: mockedApiKeys,
|
||||
},
|
||||
});
|
||||
}),
|
||||
@@ -626,13 +533,7 @@ export const graphqlMocks = {
|
||||
|
||||
return HttpResponse.json({
|
||||
data: {
|
||||
apiKey: apiKey
|
||||
? {
|
||||
__typename: 'ApiKey',
|
||||
...apiKey,
|
||||
revokedAt: null,
|
||||
}
|
||||
: null,
|
||||
apiKey: apiKey ?? null,
|
||||
},
|
||||
});
|
||||
}),
|
||||
|
||||
Reference in New Issue
Block a user