@cainiaofe/cn-ui-m
Version:
39 lines (38 loc) • 2.08 kB
JavaScript
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');
});
});