import React from 'react'; import { render, fireEvent } from '@testing-library/react'; import { axe } from 'jest-axe'; import 'jest-axe/extend-expect'; import 'regenerator-runtime/runtime'; import { Grommet } from '../../Grommet'; import { CheckBoxGroup } from '..'; describe('CheckBoxGroup', () => { test('should have no accessibility violations', async () => { const { container } = render( , ); const results = await axe(container); expect(results).toHaveNoViolations(); }); test('options renders', () => { const { container } = render( , ); expect(container.firstChild).toMatchSnapshot(); }); test('value renders', () => { const { container } = render( , ); expect(container.firstChild).toMatchSnapshot(); }); test('initial value renders', () => { const { container } = render( , ); expect(container.firstChild).toMatchSnapshot(); }); test('disabled renders', () => { const { container } = render( , ); expect(container.firstChild).toMatchSnapshot(); }); test('onChange', () => { const onChange = jest.fn(); const { container, getByText } = render( , ); fireEvent.click(getByText('first-label')); expect(onChange).toBeCalledTimes(1); expect(container.firstChild).toMatchSnapshot(); }); test('onClick for check and uncheck a CheckBox', () => { const onClick = jest.fn(); const { container, getByText } = render( , ); fireEvent.click(getByText('first-label')); expect(onClick).toBeCalledTimes(1); expect(container.firstChild).toMatchSnapshot(); fireEvent.click(getByText('first-label')); expect(onClick).toBeCalledTimes(2); expect(container.firstChild).toMatchSnapshot(); }); test('labelKey', () => { const { container } = render( , ); expect(container.firstChild).toMatchSnapshot(); }); test('valueKey', () => { const { container } = render( , ); expect(container.firstChild).toMatchSnapshot(); }); test('custom theme', () => { const customTheme = { checkBoxGroup: { container: { gap: 'large', margin: { vertical: 'small', }, }, }, }; const { container } = render( , ); expect(container.firstChild).toMatchSnapshot(); }); test('no duplicated key error', () => { const errorSpy = jest.spyOn(console, 'error').mockImplementation(); render( , ); expect(errorSpy).not.toBeCalledWith( expect.stringMatching('same key'), expect.stringMatching('Yes!'), expect.anything(), ); errorSpy.mockReset(); errorSpy.mockRestore(); }); test('checked warning', () => { const warnSpy = jest.spyOn(console, 'warn').mockImplementation(); render( , ); expect(warnSpy).toBeCalled(); warnSpy.mockReset(); warnSpy.mockRestore(); }); test('defaultValue renders', () => { const { asFragment } = render( , ); expect(asFragment()).toMatchSnapshot(); }); });