import { create } from 'react-test-renderer'; import { fireEvent, render, screen } from '@testing-library/react'; import SearchField from './SearchField'; describe('', () => { it('adds a "medium" classname by default', () => { const { container } = render( {}} placeholder="Search and explore" value="Search" />, ); // eslint-disable-next-line testing-library/no-container, testing-library/no-node-access -- Please fix the next time this file is touched! expect(container.querySelector('.medium')).toBeVisible(); }); it('adds a "large" classname when size is set to "lg"', () => { const { container } = render( {}} placeholder="Search and explore" size="lg" value="Search" />, ); // eslint-disable-next-line testing-library/no-container, testing-library/no-node-access -- Please fix the next time this file is touched! expect(container.querySelector('.large')).toBeVisible(); }); it('Renders an FormErrorMessage if an error message is passed in', () => { const component = create( {}} placeholder="Search and explore" size="lg" value="Search" />, ); expect(JSON.stringify(component.toJSON())).toContain('Error message'); }); it('Does not render an FormErrorMessage when errorMessage is null', () => { const component = create( {}} placeholder="Search and explore" size="lg" value="Search" />, ); expect(JSON.stringify(component.toJSON())).not.toContain('Error message'); }); it('should call onKeyDown callback when keyboard input is entered', () => new Promise((resolve: any) => { render( {}} onKeyDown={({ event, value }: any) => { expect(value).toEqual('Search'); expect(event.key).toEqual('a'); resolve(); }} placeholder="Search and explore" size="lg" value="Search" />, ); fireEvent.keyDown(screen.getByRole('searchbox'), { key: 'a' }); })); });