import { render, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { ToggleGroup } from '../ToggleGroup';
import { ToggleGroupItem } from '../ToggleGroupItem';
import styles from '@patternfly/react-styles/css/components/ToggleGroup/toggle-group';
const props = {
onChange: jest.fn(),
selected: false
};
describe('ToggleGroup', () => {
test('basic selected', () => {
const { asFragment } = render(
);
expect(asFragment()).toMatchSnapshot();
});
test('basic not selected', () => {
const { asFragment } = render(
);
expect(asFragment()).toMatchSnapshot();
});
test('icon variant', () => {
const { asFragment } = render(
);
expect(asFragment()).toMatchSnapshot();
});
test('isDisabled', () => {
const { asFragment } = render(
);
expect(asFragment()).toMatchSnapshot();
});
test('item passes selection and event to onChange handler', async () => {
const user = userEvent.setup();
render(
);
await user.click(screen.getByRole('button'));
expect(props.onChange).toHaveBeenCalledWith(expect.any(Object), true);
});
test('isCompact', () => {
const { asFragment } = render(
);
expect(asFragment()).toMatchSnapshot();
});
test(`does not apply ${styles.modifiers.fill} modifier class by default`, () => {
render(
);
const toggleGroup = screen.getByRole('group');
expect(toggleGroup).not.toHaveClass(styles.modifiers.fill);
});
test(`applies ${styles.modifiers.fill} modifier class when isFill is true`, () => {
render(
);
const toggleGroup = screen.getByRole('group');
expect(toggleGroup).toHaveClass(styles.modifiers.fill);
});
test('should render non-ToggleGroupItem children', () => {
const { asFragment } = render(
{false && }
{'Test 3'}
{undefined}
{null}
);
expect(asFragment()).toMatchSnapshot();
});
});