import React from 'react'
import { render, screen } from '@testing-library/react'
import userEvent from '@testing-library/user-event'
import { TestContextProviders } from '../../../../test-utils/app-context-providers'
import { CsvExport, ExportStatus } from './csv-export'
const exportButton = () => screen.getByRole('button', { name: /export stats/i })
function renderCsvExport({
exportStatus,
setExportStatus
}: {
exportStatus: ExportStatus
setExportStatus: () => void
}) {
render(
,
{
wrapper: (props) =>
}
)
}
test('shows spinner while exporting', () => {
renderCsvExport({
exportStatus: ExportStatus.exporting,
setExportStatus: jest.fn()
})
expect(exportButton().querySelector('.animate-spin')).toBeInTheDocument()
})
test('does not start a second export while one is in progress', async () => {
const setExportStatus = jest.fn()
renderCsvExport({ exportStatus: ExportStatus.exporting, setExportStatus })
await userEvent.click(exportButton())
expect(setExportStatus).not.toHaveBeenCalled()
})
test('shows error icon when export fails', () => {
renderCsvExport({
exportStatus: ExportStatus.error,
setExportStatus: jest.fn()
})
expect(screen.getByTestId('export-error-icon')).toBeInTheDocument()
})