import { screen } from '@testing-library/react'; import { fromPartial } from '@total-typescript/shoehorn'; import { formatISO } from 'date-fns'; import { MemoryRouter } from 'react-router-dom'; import type { MercureBoundProps } from '../../shlink-web-component/src/mercure/helpers/boundToMercureHub'; import { OrphanVisits as createOrphanVisits } from '../../shlink-web-component/src/visits/OrphanVisits'; import type { VisitsInfo } from '../../shlink-web-component/src/visits/reducers/types'; import { renderWithEvents } from '../__helpers__/setUpTest'; describe('', () => { const getOrphanVisits = vi.fn(); const exportVisits = vi.fn(); const orphanVisits = fromPartial({ visits: [{ date: formatISO(new Date()) }] }); const OrphanVisits = createOrphanVisits(fromPartial({ exportVisits })); const setUp = () => renderWithEvents( ({ mercureInfo: {} })} getOrphanVisits={getOrphanVisits} orphanVisits={orphanVisits} cancelGetOrphanVisits={vi.fn()} settings={fromPartial({})} /> , ); it('wraps visits stats and header', () => { setUp(); expect(screen.getByRole('heading', { name: 'Orphan visits' })).toBeInTheDocument(); expect(getOrphanVisits).toHaveBeenCalled(); }); it('exports visits when clicking the button', async () => { const { user } = setUp(); const btn = screen.getByRole('button', { name: 'Export (1)' }); expect(exportVisits).not.toHaveBeenCalled(); expect(btn).toBeInTheDocument(); await user.click(btn); expect(exportVisits).toHaveBeenCalledWith('orphan_visits.csv', expect.anything()); }); });