UNPKG

@cainiaofe/cn-ui-m

Version:
39 lines (38 loc) 2.08 kB
import React from 'react'; import { render, fireEvent } from '@testing-library/react'; import { CnRadio } from '../index'; describe('CnRadio', function () { test('renders without errors', function () { var getByText = render(React.createElement(CnRadio, null, "123")).getByText; expect(getByText('123')).toBeInTheDocument(); }); test('renders with custom props', function () { var getByTestId = render(React.createElement(CnRadio, { size: "small", checked: true, onChange: jest.fn(), disabled: true }, "Option 1")).getByTestId; var container = getByTestId('cn-radio-container'); expect(container).toHaveClass('cn-ui-m-radio-container--small'); expect(container.firstChild).toHaveClass('cn-ui-m-radio-circle--selected-disabled'); }); test('calls onChange callback when clicked', function () { var onChange = jest.fn(); var getByTestId = render(React.createElement(CnRadio, { onChange: onChange }, "Option 1")).getByTestId; var container = getByTestId('cn-radio-container'); fireEvent.click(container); expect(onChange).toHaveBeenCalledTimes(1); expect(onChange).toHaveBeenCalledWith(true, expect.anything()); }); test('does not call onChange callback when disabled', function () { var onChange = jest.fn(); var getByTestId = render(React.createElement(CnRadio, { onChange: onChange, disabled: true }, "Option 1")).getByTestId; var container = getByTestId('cn-radio-container'); fireEvent.click(container); expect(onChange).not.toHaveBeenCalled(); }); test('toggles selected state when clicked', function () { var getByTestId = render(React.createElement(CnRadio, null)).getByTestId; var container = getByTestId('cn-radio-container'); fireEvent.click(container); expect(container.firstChild).toHaveClass('cn-ui-m-radio-circle--selected'); fireEvent.click(container); expect(container.firstChild).toHaveClass('cn-ui-m-radio-circle--unselected'); }); });