import React, { Suspense, lazy } from 'react'; import { act } from '@testing-library/react'; import { HotTable } from '../src/hotTable'; import { createSpreadsheetData, mockElementDimensions, mountComponentWithRef, sleep, } from './_helpers'; import { HotRendererProps, HotTableRef } from '../src/types' describe('React.lazy', () => { it('should be possible to lazy-load components and utilize Suspend', async () => { function RendererComponent2(props: HotRendererProps) { return ( <> lazy value: {props.value} ); } let promiseResolve: (value: unknown) => void = () => undefined; function SuspendedRenderer(props: HotRendererProps) { const customImportPromise = new Promise(function (resolve, reject) { promiseResolve = resolve; } ) as any; const LazierRenderer = lazy(() => customImportPromise); return ( loading-message}> ) } const hotInstance = mountComponentWithRef(( )).hotInstance!; expect(hotInstance.getCell(0, 0)!.innerHTML).toEqual('
loading-message
'); await act(async () => { promiseResolve({ default: RendererComponent2, __esModule: true }); }); await sleep(40); expect(hotInstance.getCell(0, 0)!.innerHTML).toEqual('
lazy value: A1
'); }); });