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);
});