UNPKG

@cainiaofe/cn-ui-m

Version:
70 lines (69 loc) 3.71 kB
import React from 'react'; import { act, render, screen, fireEvent } from '@testing-library/react'; import { CnInput } from '../index'; import { FORM_EMPTY_CONTENT } from '@cainiaofe/cn-ui-common'; describe('CnInput', function () { test('renders input element with the correct props', function () { var getByPlaceholderText = render(React.createElement(CnInput, { placeholder: "Enter text" })).getByPlaceholderText; var inputElement = getByPlaceholderText('Enter text'); expect(inputElement).toBeInTheDocument(); expect(inputElement).toHaveAttribute('type', 'text'); }); test('只读态空值渲染测试', function () { var container = render(React.createElement(CnInput, { readOnly: true })).container; expect(container.textContent).toContain(FORM_EMPTY_CONTENT); }); test('只读态没有清空按钮', function () { var container = render(React.createElement(CnInput, { hasClear: true, value: "test", readOnly: true })).container; var element = container.querySelector('.cn-ui-m-input--icon-clear'); expect(element).toBeNull(); }); test('禁用状态无清空按钮', function () { var container = render(React.createElement(CnInput, { hasClear: true, disabled: true, value: "test" })).container; var element = container.querySelector('.cn-ui-m-input--icon-clear'); expect(element).toBeNull(); }); test('测试 CnInput 输入内容', function () { render(React.createElement(CnInput, null)); var inputElement = screen.getByTestId('cn-input__input'); // 模拟用户输入 fireEvent.change(inputElement, { target: { value: 'test input' } }); // 断言输入结果 expect(inputElement.value).toBe('test input'); }); test('测试 CnInput 输入内容超出被限制是否成功', function () { render(React.createElement(CnInput, { maxLength: 10 })); var inputElement = screen.getByTestId('cn-input__input'); // 模拟用户输入 fireEvent.change(inputElement, { target: { value: 'test input is ok' } }); // 断言输入结果 expect(inputElement.value).toBe('test input'); }); test('测试 CnInput 聚焦、失焦后,className 逻辑是否正常', function () { render(React.createElement(CnInput, { highlightable: true })); var inputElement = screen.getByTestId('cn-input__input'); // 模拟聚焦事件 fireEvent.focus(inputElement); var parentElement = screen.getByTestId('cn-input'); expect(parentElement).toHaveClass('cn-ui-m-input--highlighted'); // 失去焦点后,className 消失 fireEvent.blur(inputElement); expect(parentElement).not.toHaveClass('cn-ui-m-input--highlighted'); }); test('测试 ref api 是否正常工作', function () { var _a, _b, _c; var ref = React.createRef(); var value = 'test'; act(function () { render(React.createElement(CnInput, { highlightable: true, defaultValue: value, ref: ref })); }); (_a = ref.current) === null || _a === void 0 ? void 0 : _a.focus(); var parentElement = screen.getByTestId('cn-input'); var inputElement = screen.getByTestId('cn-input__input'); expect(parentElement).toHaveClass('cn-ui-m-input--highlighted'); (_b = ref.current) === null || _b === void 0 ? void 0 : _b.blur(); expect(parentElement).not.toHaveClass('cn-ui-m-input--highlighted'); var nativeElement = (_c = ref.current) === null || _c === void 0 ? void 0 : _c.nativeElement; expect(inputElement).toEqual(nativeElement); }); });