import { render, screen } from '@testing-library/react'; import { Th } from '../Th'; test('Does not render with aria-label by default', () => { render(); expect(screen.getByRole('columnheader')).not.toHaveAccessibleName(); }); test('Renders with aria-label when passed in', () => { render(); expect(screen.getByRole('columnheader')).toHaveAccessibleName('Test'); }); test('Does not render with screen reader text by default', () => { render(); expect(screen.getByRole('columnheader')).toBeEmptyDOMElement(); }); test('Does not render with screen reader text when children are passed in', () => { render(Heading label); expect(screen.getByRole('columnheader')).not.toHaveTextContent('Test'); }); test('Renders with screen reader text when screenReaderText is passed in', () => { render(); expect(screen.getByRole('columnheader')).toHaveTextContent('Test'); }); test('Does not render with additional content by default', () => { render(); expect(screen.getByRole('columnheader')).toBeEmptyDOMElement(); }); test('Render with additional content when additionalContent is passed in', () => { render(Extra}>Test); expect(screen.getByRole('columnheader')).toHaveTextContent('Extra'); }); test('Additional content renders after children when additionalContent is passed in', () => { render( Extra}>
Test
); const th = screen.getByRole('columnheader'); const thChildren = th.children; expect(thChildren.item(0)?.textContent).toEqual('Test'); expect(thChildren.item(1)?.textContent).toEqual('Extra'); }); test('Renders checkbox without indeterminate state by default', () => { render(); const checkbox = screen.getByRole('checkbox') as HTMLInputElement; expect(checkbox).not.toBeChecked(); expect(checkbox.indeterminate).toBe(false); }); test('Renders checkbox with indeterminate state when isIndeterminate is true', () => { render(); const checkbox = screen.getByRole('checkbox') as HTMLInputElement; expect(checkbox.indeterminate).toBe(true); }); test('Renders checked checkbox when isSelected is true and isIndeterminate is false', () => { render(); const checkbox = screen.getByRole('checkbox') as HTMLInputElement; expect(checkbox).toBeChecked(); expect(checkbox.indeterminate).toBe(false); });