Fix front unit test on main (#20233)

Jest mocks runs before the const is defined
This commit is contained in:
Paul Rastoin
2026-05-04 15:14:43 +02:00
committed by GitHub
parent d2cfbf319b
commit 596ce32bd6
5 changed files with 54 additions and 46 deletions
@@ -9,13 +9,14 @@ import { useCreateOneRecord } from '@/object-record/hooks/useCreateOneRecord';
import { useRefetchAggregateQueries } from '@/object-record/hooks/useRefetchAggregateQueries';
import { getJestMetadataAndApolloMocksWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksWrapper';
const personId = 'a7286b9a-c039-4a89-9567-2dfa7953cda9';
const input = { name: { firstName: 'John', lastName: 'Doe' } };
const PERSON_ID = 'a7286b9a-c039-4a89-9567-2dfa7953cda9';
jest.mock('uuid', () => ({
v4: jest.fn(() => personId),
v4: jest.fn(() => 'a7286b9a-c039-4a89-9567-2dfa7953cda9'),
}));
const input = { name: { firstName: 'John', lastName: 'Doe' } };
jest.mock('@/object-record/hooks/useRefetchAggregateQueries');
const mockRefetchAggregateQueries = jest.fn();
(useRefetchAggregateQueries as jest.Mock).mockReturnValue({
@@ -26,11 +27,11 @@ const mocks = [
{
request: {
query,
variables: { input: { ...input, id: personId } },
variables: { input: { ...input, id: PERSON_ID } },
},
result: jest.fn(() => ({
data: {
createPerson: { ...responseData, ...input, id: personId },
createPerson: { ...responseData, ...input, id: PERSON_ID },
},
})),
},
@@ -58,7 +59,7 @@ describe('useCreateOneRecord', () => {
await act(async () => {
const res = await result.current.createOneRecord(input);
expect(res).toBeDefined();
expect(res).toHaveProperty('id', personId);
expect(res).toHaveProperty('id', PERSON_ID);
});
expect(mocks[0].result).toHaveBeenCalled();
@@ -1,15 +1,19 @@
import { renderHook } from '@testing-library/react';
import { act } from 'react';
import gql from 'graphql-tag';
import { CoreObjectNameSingular } from 'twenty-shared/types';
import { spreadsheetImportDialogState } from '@/spreadsheet-import/states/spreadsheetImportDialogState';
import { useOpenObjectRecordsSpreadsheetImportDialog } from '@/object-record/spreadsheet-import/hooks/useOpenObjectRecordsSpreadsheetImportDialog';
import { jotaiStore } from '@/ui/utilities/state/jotai/jotaiStore';
import gql from 'graphql-tag';
import { getJestMetadataAndApolloMocksWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksWrapper';
const COMPANY_ID = 'cb2e9f4b-20c3-4759-9315-4ffeecfaf71a';
jest.mock('uuid', () => ({
v4: jest.fn(() => 'cb2e9f4b-20c3-4759-9315-4ffeecfaf71a'),
}));
const mockBatchCreateManyRecords = jest.fn().mockResolvedValue([]);
jest.mock('@/object-record/hooks/useBatchCreateManyRecords', () => ({
@@ -18,17 +22,11 @@ jest.mock('@/object-record/hooks/useBatchCreateManyRecords', () => ({
}),
}));
const companyId = 'cb2e9f4b-20c3-4759-9315-4ffeecfaf71a';
jest.mock('uuid', () => ({
v4: jest.fn(() => companyId),
}));
const mockResult = jest.fn(() => ({
data: {
createCompanies: [
{
id: companyId,
id: COMPANY_ID,
name: 'Example Company',
employees: 0,
idealCustomerProfile: true,
@@ -137,7 +135,7 @@ describe('useOpenObjectRecordsSpreadsheetImportDialog', () => {
const submitData = {
validStructuredRows: [
{
id: companyId,
id: COMPANY_ID,
name: 'Example Company',
idealCustomerProfile: true,
employees: '0',
@@ -146,7 +144,7 @@ describe('useOpenObjectRecordsSpreadsheetImportDialog', () => {
invalidStructuredRows: [],
allStructuredRows: [
{
id: companyId,
id: COMPANY_ID,
name: 'Example Company',
__index: 'cbc3985f-dde9-46d1-bae2-c124141700ac',
idealCustomerProfile: true,
@@ -1,15 +1,24 @@
import { v4 as uuidv4 } from 'uuid';
import {
type WorkflowStep,
type WorkflowTrigger,
} from '@/workflow/types/Workflow';
import { StepStatus, type WorkflowRunStepInfos } from 'twenty-shared/workflow';
import { FieldMetadataType } from 'twenty-shared/types';
import { getUuidV4Mock } from '~/testing/utils/getUuidV4Mock';
import { generateWorkflowRunDiagram } from '@/workflow/workflow-diagram/utils/generateWorkflowRunDiagram';
jest.mock('uuid', () => ({
v4: getUuidV4Mock(),
}));
jest.mock('uuid');
beforeEach(() => {
let counter = 0;
(uuidv4 as jest.Mock).mockImplementation(
() => `8f3b2121-f194-4ba4-9fbf-${counter++}`,
);
});
afterAll(() => {
jest.resetAllMocks();
});
describe('generateWorkflowRunDiagram', () => {
it('marks node as failed when the last attempt failed', () => {
@@ -349,7 +358,7 @@ describe('generateWorkflowRunDiagram', () => {
"edgeType": "default",
},
"deletable": false,
"id": "8f3b2121-f194-4ba4-9fbf-3",
"id": "8f3b2121-f194-4ba4-9fbf-0",
"markerEnd": "edge-branch-arrow-default",
"markerStart": undefined,
"selectable": false,
@@ -367,7 +376,7 @@ describe('generateWorkflowRunDiagram', () => {
"edgeType": "default",
},
"deletable": false,
"id": "8f3b2121-f194-4ba4-9fbf-4",
"id": "8f3b2121-f194-4ba4-9fbf-1",
"markerEnd": "edge-branch-arrow-default",
"markerStart": undefined,
"selectable": false,
@@ -385,7 +394,7 @@ describe('generateWorkflowRunDiagram', () => {
"edgeType": "default",
},
"deletable": false,
"id": "8f3b2121-f194-4ba4-9fbf-5",
"id": "8f3b2121-f194-4ba4-9fbf-2",
"markerEnd": "edge-branch-arrow-default",
"markerStart": undefined,
"selectable": false,
@@ -585,7 +594,7 @@ describe('generateWorkflowRunDiagram', () => {
"edgeType": "default",
},
"deletable": false,
"id": "8f3b2121-f194-4ba4-9fbf-6",
"id": "8f3b2121-f194-4ba4-9fbf-0",
"markerEnd": "edge-branch-arrow-default",
"markerStart": undefined,
"selectable": false,
@@ -603,7 +612,7 @@ describe('generateWorkflowRunDiagram', () => {
"edgeType": "default",
},
"deletable": false,
"id": "8f3b2121-f194-4ba4-9fbf-7",
"id": "8f3b2121-f194-4ba4-9fbf-1",
"markerEnd": "edge-branch-arrow-default",
"markerStart": undefined,
"selectable": false,
@@ -621,7 +630,7 @@ describe('generateWorkflowRunDiagram', () => {
"edgeType": "default",
},
"deletable": false,
"id": "8f3b2121-f194-4ba4-9fbf-8",
"id": "8f3b2121-f194-4ba4-9fbf-2",
"markerEnd": "edge-branch-arrow-default",
"markerStart": undefined,
"selectable": false,
@@ -839,7 +848,7 @@ describe('generateWorkflowRunDiagram', () => {
"edgeType": "default",
},
"deletable": false,
"id": "8f3b2121-f194-4ba4-9fbf-9",
"id": "8f3b2121-f194-4ba4-9fbf-0",
"markerEnd": "edge-branch-arrow-default",
"markerStart": undefined,
"selectable": false,
@@ -857,7 +866,7 @@ describe('generateWorkflowRunDiagram', () => {
"edgeType": "default",
},
"deletable": false,
"id": "8f3b2121-f194-4ba4-9fbf-10",
"id": "8f3b2121-f194-4ba4-9fbf-1",
"markerEnd": "edge-branch-arrow-default",
"markerStart": undefined,
"selectable": false,
@@ -875,7 +884,7 @@ describe('generateWorkflowRunDiagram', () => {
"edgeType": "default",
},
"deletable": false,
"id": "8f3b2121-f194-4ba4-9fbf-11",
"id": "8f3b2121-f194-4ba4-9fbf-2",
"markerEnd": "edge-branch-arrow-default",
"markerStart": undefined,
"selectable": false,
@@ -893,7 +902,7 @@ describe('generateWorkflowRunDiagram', () => {
"edgeType": "default",
},
"deletable": false,
"id": "8f3b2121-f194-4ba4-9fbf-12",
"id": "8f3b2121-f194-4ba4-9fbf-3",
"markerEnd": "edge-branch-arrow-default",
"markerStart": undefined,
"selectable": false,
@@ -1081,7 +1090,7 @@ describe('generateWorkflowRunDiagram', () => {
"edgeType": "default",
},
"deletable": false,
"id": "8f3b2121-f194-4ba4-9fbf-13",
"id": "8f3b2121-f194-4ba4-9fbf-0",
"markerEnd": "edge-branch-arrow-default",
"markerStart": undefined,
"selectable": false,
@@ -1,9 +1,18 @@
import { getUuidV4Mock } from '~/testing/utils/getUuidV4Mock';
import { v4 as uuidv4 } from 'uuid';
import { getWorkflowVersionDiagram } from '@/workflow/workflow-diagram/utils/getWorkflowVersionDiagram';
jest.mock('uuid', () => ({
v4: getUuidV4Mock(),
}));
jest.mock('uuid');
beforeEach(() => {
let counter = 0;
(uuidv4 as jest.Mock).mockImplementation(
() => `8f3b2121-f194-4ba4-9fbf-${counter++}`,
);
});
afterAll(() => {
jest.resetAllMocks();
});
describe('getWorkflowVersionDiagram', () => {
it('returns an empty diagram if the provided workflow version', () => {
@@ -1,9 +0,0 @@
const baseUuid = '8f3b2121-f194-4ba4-9fbf-';
export const getUuidV4Mock = () => {
let id = 0;
return () => {
return baseUuid + id++;
};
};