// Copyright Contributors to the Amundsen project. // SPDX-License-Identifier: Apache-2.0 import * as React from 'react'; import { shallow } from 'enzyme'; import CheckBoxItem, { CheckBoxItemProps } from '.'; describe('CheckBoxItem', () => { const expectedChild = I am a child; const setup = (propOverrides?: Partial) => { const props: CheckBoxItemProps = { checked: true, disabled: false, name: 'test', value: 'testMethod', onChange: jest.fn(), children:
, ...propOverrides, }; const wrapper = shallow( // eslint-disable-next-line react/jsx-props-no-spreading {expectedChild} ); return { props, wrapper }; }; describe('render', () => { let props; let wrapper; beforeAll(() => { const setupResult = setup(); props = setupResult.props; wrapper = setupResult.wrapper; }); it('renders itself with correct class', () => { expect(wrapper.hasClass('checkbox')).toBe(true); }); it('renders itself with correct class', () => { expect(wrapper.find('label').hasClass('checkbox-label')).toBe(true); }); it('renders input with correct props', () => { const input = wrapper.find('label').children().at(0); expect(input.exists()).toBe(true); expect(input.props()).toEqual({ type: 'checkbox', checked: props.checked, disabled: props.disabled, name: props.name, onChange: props.onChange, value: props.value, }); }); it('renders input with default value for checked if not provided', () => { const { wrapper } = setup({ checked: undefined }); expect(wrapper.find('input').props().checked).toEqual(false); }); it('renders input with default value for disabled if not provided', () => { const { wrapper } = setup({ disabled: undefined }); expect(wrapper.find('input').props().disabled).toEqual(false); }); it('renders expected children after input', () => { const labelChildren = wrapper.find('label').children(); expect(labelChildren.at(1).contains(expectedChild)).toBe(true); }); }); });