import React from 'react'; import { act, render, RenderResult, waitFor } from '@testing-library/react'; import { Tooltip } from '@/components/addons/tooltip/Tooltip'; import { Chart } from '@/components/Chart'; import { baseChartProps } from 'tests/common'; import { ShapeDatum, TooltipContext } from 'eazychart-core/src/types'; import { chartData } from 'eazychart-core/src/sample-data'; import 'tests/mocks/ResizeObserver'; const mockShowTooltip = jest.fn(); const mockMoveTooltip = jest.fn(); const mockHideTooltip = jest.fn(); const mockTooltip: TooltipContext = { showTooltip: mockShowTooltip, moveTooltip: mockMoveTooltip, hideTooltip: mockHideTooltip, }; jest.mock('@/components/addons/tooltip/use-tooltip', () => ({ useTooltip: () => { return mockTooltip; }, })); jest.mock('@/lib/use-animation', () => ({ useAnimation: (targetData: any) => { return targetData; }, })); describe('Tooltip', () => { afterAll(() => { jest.resetAllMocks(); }); it('renders no tooltip when shape is being hovered', () => { const wrapper = render( <>{null}, TooltipComponent: Tooltip, }, }} /> ); expect(wrapper.container.innerHTML).toMatchSnapshot(); }); it('renders the tooltip when a shape is hovered', async () => { let wrapper: RenderResult; act(() => { // 1st render wrapper = render( <>{null}, TooltipComponent: () => ( ), }, }} > ); }); // 2nd render await waitFor(() => { expect(wrapper.container.innerHTML).toMatchSnapshot(); }); }); });