import { render, screen } from '@testing-library/react'; import { userEvent } from '@testing-library/user-event'; import { describe, expect, it, vi } from 'vitest'; import { ClientTable } from './ClientTable.tsx'; const TEST_ID = 'ClientTable'; const FIRST_BUTTON_ID = 'first-page-button'; const PREVIOUS_BUTTON_ID = 'previous-page-button'; const NEXT_BUTTON_ID = 'next-page-button'; const LAST_BUTTON_ID = 'last-page-button'; const PAGE_NUMBER_TEST_ID = 'page-numbers'; describe('ClientTable', () => { it('should render', () => { render(); expect(screen.getByTestId(TEST_ID)).toBeInTheDocument(); expect(screen.getByTestId(FIRST_BUTTON_ID)).toBeInTheDocument(); expect(screen.getByTestId(PREVIOUS_BUTTON_ID)).toBeInTheDocument(); expect(screen.getByTestId(NEXT_BUTTON_ID)).toBeInTheDocument(); expect(screen.getByTestId(LAST_BUTTON_ID)).toBeInTheDocument(); }); it('should contain a custom class name', () => { render(); expect(screen.getByTestId(TEST_ID)).toHaveClass('foo'); }); it('should function correctly', async () => { const handleClientTableItemClick = vi.fn(); const handleClientTableDropdownClick = vi.fn(); render( ); expect(screen.getByTestId(PAGE_NUMBER_TEST_ID)).toBeInTheDocument(); await userEvent.click(screen.getByTestId(NEXT_BUTTON_ID)); await userEvent.click(await screen.findByText('23.00')); expect(handleClientTableItemClick).toBeCalled(); expect(screen.getByTestId(PAGE_NUMBER_TEST_ID).textContent).toBe('2 - 2 / 2'); await userEvent.click(screen.getByTestId(PREVIOUS_BUTTON_ID)); await userEvent.click(await screen.findByText('1.00')); expect(handleClientTableItemClick).toBeCalled(); expect(screen.getByTestId(PAGE_NUMBER_TEST_ID).textContent).toBe('1 - 1 / 2'); await userEvent.click(screen.getByTestId(LAST_BUTTON_ID)); await userEvent.click(await screen.findByText('23.00')); expect(handleClientTableItemClick).toBeCalled(); expect(screen.getByTestId(PAGE_NUMBER_TEST_ID).textContent).toBe('2 - 2 / 2'); await userEvent.click(screen.getByTestId(FIRST_BUTTON_ID)); await userEvent.click(await screen.findByText('1.00')); expect(handleClientTableItemClick).toBeCalled(); expect(screen.getByTestId(PAGE_NUMBER_TEST_ID).textContent).toBe('1 - 1 / 2'); await userEvent.click(await screen.findByText('Field 1')); await userEvent.click(screen.getByTestId('delete-test-id')); expect(handleClientTableDropdownClick).toBeCalled(); }); });