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