import { render, screen } from '@testing-library/react';
import List from './List';
import Text from './Text';
describe('List', () => {
function Component({
labelDisplay,
type,
text,
}: {
labelDisplay?: 'hidden' | 'visible';
type?: 'unordered' | 'bare' | 'ordered';
text?: boolean;
}) {
return (
Numbers : 'Numbers'} labelDisplay={labelDisplay} type={type}>
1 : '1'}>
);
}
test('List presents label and item texts with strings', () => {
render();
expect(
screen.getByText('Numbers', {
exact: true,
}),
).toBeVisible();
expect(
screen.getByText('1', {
exact: true,
}),
).toBeVisible();
expect(
screen.getByText('2', {
exact: true,
}),
).toBeVisible();
expect(
screen.getByText('3', {
exact: true,
}),
).toBeVisible();
expect(
screen.getByText('4', {
exact: true,
}),
).toBeVisible();
expect(
screen.getByText('5', {
exact: true,
}),
).toBeVisible();
expect(
screen.getByText('6', {
exact: true,
}),
).toBeVisible();
});
test('List presents label and item texts with Text', () => {
render();
expect(
screen.getByText('Numbers', {
exact: true,
}),
).toBeVisible();
expect(
screen.getByText('1', {
exact: true,
}),
).toBeVisible();
});
test('List uses correct li tags', () => {
render();
const array = screen.getAllByRole('listitem');
expect(array.length).toEqual(6);
});
test('Ordered list uses correct ol tags', () => {
render();
const array = screen.getAllByRole('list');
expect(array.filter((a: any) => a.type !== 'ol').length).toEqual(6);
});
test('Unordered list uses correct ol tags', () => {
render();
const array = screen.getAllByRole('list');
expect(array.filter((a: any) => a.type !== 'ul').length).toEqual(6);
});
test('Bare list uses correct ul tags', () => {
render();
const array = screen.getAllByRole('list');
expect(array.filter((a: any) => a.type !== 'ul').length).toEqual(6);
});
});