UNPKG

@cainiaofe/cn-ui-m

Version:
204 lines (203 loc) 7.07 kB
import React from 'react'; import { fireEvent, render, waitFor, getByTestId, } from '@testing-library/react'; import { CnCascaderSelect } from '../index'; var options = [ { label: '浙江', value: '浙江', children: [ { label: '杭州', value: '杭州', children: [ { label: '西湖区', value: '西湖区', children: [], }, { label: '上城区', value: '上城区', }, { label: '余杭区', value: '余杭区', disabled: true, }, ], }, { label: '温州', value: '温州', children: [ { label: '鹿城区', value: '鹿城区', }, { label: '龙湾区', value: '龙湾区', disabled: true, }, { label: '瓯海区', value: '瓯海区', }, ], }, { label: '宁波', value: '宁波', children: [ { label: '海曙区', value: '海曙区', }, { label: '江北区', value: '江北区', }, { label: '镇海区', value: '镇海区', }, ], }, ], }, { label: '安徽', value: '安徽', children: [ { label: '合肥', value: '合肥', children: [ { label: '包河区', value: '包河区', }, { label: '蜀山区', value: '蜀山区', }, { label: '瑶海区', value: '瑶海区', }, ], }, { label: '芜湖', value: '芜湖', children: [ { label: '镜湖区', value: '镜湖区', }, { label: '弋江区', value: '弋江区', }, { label: '湾沚区', value: '湾沚区', }, ], }, ], }, { label: '江苏', value: '江苏', children: [ { label: '南京', value: '南京', children: [ { label: '玄武区', value: '玄武区', }, { label: '秦淮区', value: '秦淮区', }, { label: '建邺区', value: '建邺区', }, ], }, { label: '苏州', value: '苏州', children: [ { label: '虎丘区', value: '虎丘区', }, { label: '吴中区', value: '吴中区', }, { label: '相城区', value: '相城区', }, ], }, ], }, ]; describe('CnCascaderSelect tree模式检查', function () { it('renders CnCascaderSelect component correctly when mode is tree', function () { var _a = render(React.createElement(CnCascaderSelect, { dataSource: options, mode: "tree" })), container = _a.container, getByText = _a.getByText; var dom = container.querySelector('.cn-ui-m-cascader'); fireEvent.click(dom); waitFor(function () { expect(document.querySelector('.cn-ui-m-drawer-container')).toBeInTheDocument(); expect(getByText('浙江')).toBeInTheDocument(); expect(getByText('杭州')).toBeInTheDocument(); expect(getByText('西湖区')).toBeInTheDocument(); expect(getByText('镇海区')).not.toBeInTheDocument(); }, { timeout: 1000 }); }); // 测试取消事件 it('cancel event', function () { var mockFn = jest.fn(); var _a = render(React.createElement(CnCascaderSelect, { dataSource: options, mode: "tree", onCancel: mockFn })), container = _a.container, getByText = _a.getByText; var dom = container.querySelector('.cn-ui-m-cascader'); fireEvent.click(dom); waitFor(function () { var cancel = getByTestId(container, 'select-drawer-btn-cancel'); fireEvent.click(cancel); expect(mockFn).toHaveBeenCalled(); }, { timeout: 1000 }); waitFor(function () { fireEvent.click(dom); expect(getByText('浙江')).toBeInTheDocument(); expect(getByText('杭州')).toBeInTheDocument(); expect(getByText('西湖区')).toBeInTheDocument(); expect(getByText('镇海区')).not.toBeInTheDocument(); }, { timeout: 5000 }); }); // 测试清除事件 it('clear event', function () { var mockFn = jest.fn(); var _a = render(React.createElement(CnCascaderSelect, { dataSource: options, mode: "tree", defaultValue: ['江苏', '苏州', '相城区'], onClear: mockFn })), container = _a.container, getByText = _a.getByText; var dom = container.querySelector('.cn-ui-m-cascader'); waitFor(function () { var clear = getByTestId(container, 'select-drawer-clear-icon'); fireEvent.click(clear); expect(mockFn).toHaveBeenCalled(); }, { timeout: 1000 }); waitFor(function () { fireEvent.click(dom); expect(getByText('浙江')).toBeInTheDocument(); expect(getByText('杭州')).toBeInTheDocument(); expect(getByText('西湖区')).toBeInTheDocument(); expect(getByText('镇海区')).not.toBeInTheDocument(); }, { timeout: 5000 }); }); });