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