import { Config } from 'app/plugins/panel/nodeGraph/layout'; import { EdgeDatum, NodeDatum } from 'app/plugins/panel/nodeGraph/types'; const { layout } = jest.requireActual('../../app/plugins/panel/nodeGraph/layout.worker.utils.js'); class LayoutMockWorker { timeout: number | undefined; constructor() {} postMessage(data: { nodes: NodeDatum[]; edges: EdgeDatum[]; config: Config }) { const { nodes, edges, config } = data; this.timeout = window.setTimeout(() => { this.timeout = undefined; layout(nodes, edges, config); // @ts-ignore this.onmessage({ data: { nodes, edges } }); }, 1); } terminate() { if (this.timeout) { clearTimeout(this.timeout); } } } jest.mock('../../app/plugins/panel/nodeGraph/createLayoutWorker', () => ({ createWorker: () => new LayoutMockWorker(), })); class BasicMockWorker { postMessage() {} } const mockCreateWorker = { createWorker: () => new BasicMockWorker(), }; jest.mock('../../app/features/live/centrifuge/createCentrifugeServiceWorker', () => mockCreateWorker);