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