UNPKG

zarm

Version:

基于 React 的移动端UI库

224 lines (213 loc) 7.26 kB
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator"; import _regeneratorRuntime from "@babel/runtime/regenerator"; import React from 'react'; import { fireEvent, render, screen } from '@testing-library/react'; import Cascader from '../index'; import Button from '../../button'; import { parseItems } from '../../cascader-view/utils'; jest.useFakeTimers(); var District = [{ value: '340000', label: '安徽省', children: [{ value: '340800', label: '安庆市', children: [{ value: '340803', label: '大观区', children: [] }, { value: '340822', label: '怀宁县', children: [] }, { value: '340882', label: '其它区', children: [] }] }] }, { value: '310000', label: '上海', children: [{ value: '310100', label: '上海市', children: [{ value: '310113', label: '宝山区', children: [] }, { value: '310105', label: '长宁区', children: [] }, { value: '310230', label: '崇明县', children: [] }, { value: '310152', label: '川沙区', children: [] }] }] }]; describe('Cascader', function () { it('renders correctly if visible is true', function () { var onChange = jest.fn(); var _render = render( /*#__PURE__*/React.createElement(Cascader, { defaultValue: [], value: [], cancelText: "\u53D6\u6D88", confirmText: "\u786E\u5B9A", visible: true, itemRender: function itemRender(data) { return data.label; }, dataSource: District, onChange: onChange, mountContainer: false })), container = _render.container; expect(container).toMatchSnapshot(); }); it('handle props click', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() { var onCancel, onConfirm, value, _render2, container, getByText, items, mask; return _regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: onCancel = jest.fn(); onConfirm = jest.fn(); value = ['340000', '340800', '340803']; _render2 = render( /*#__PURE__*/React.createElement(Cascader, { defaultValue: [], value: value, cancelText: "\u53D6\u6D88", confirmText: "\u786E\u5B9A", visible: true, maskClosable: true, dataSource: District, onCancel: onCancel, onConfirm: onConfirm, mountContainer: false })), container = _render2.container, getByText = _render2.getByText; fireEvent.click(getByText('确定')); items = parseItems(District, value); expect(onConfirm).toHaveBeenCalledWith(value, items); fireEvent.click(getByText('取消')); expect(onCancel).toBeCalled(); mask = container.querySelector('.za-mask'); fireEvent.click(mask); expect(onCancel).toBeCalled(); case 12: case "end": return _context.stop(); } } }, _callee); }))); it('handle onChange', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() { var onChange, _render3, container, currentValue, items; return _regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: onChange = jest.fn(); _render3 = render( /*#__PURE__*/React.createElement(Cascader, { "data-testid": "root", defaultValue: [], value: [], cancelText: "\u53D6\u6D88", confirmText: "\u786E\u5B9A", visible: true, dataSource: District, onChange: onChange, mountContainer: false })), container = _render3.container; fireEvent.click(screen.getAllByDisplayValue('340000')[0]); _context2.next = 5; return screen.findByText('安庆市'); case 5: expect(container).toMatchSnapshot(); fireEvent.click(screen.getAllByDisplayValue('340800')[0]); _context2.next = 9; return screen.findByText('大观区'); case 9: expect(container).toMatchSnapshot(); fireEvent.click(screen.getAllByDisplayValue('340803')[0]); expect(container).toMatchSnapshot(); currentValue = ['340000', '340800', '340803']; items = parseItems(District, currentValue); expect(onChange).toBeCalledTimes(3); expect(onChange).toHaveBeenCalledWith(currentValue, items); case 16: case "end": return _context2.stop(); } } }, _callee2); }))); it('static method prompt', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() { var cancel, confirm, CASCADE_DATA, _render4, getByText, currentValue, items; return _regeneratorRuntime.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: cancel = jest.fn(); confirm = jest.fn(); CASCADE_DATA = [{ value: '1', label: '北京市', children: [{ value: '11', label: '海淀区', children: [] }, { value: '12', label: '西城区', children: [] }] }, { value: '2', label: '上海市', children: [{ value: '21', label: '杨浦区', children: [] }, { value: '22', label: '静安区', children: [] }] }]; _render4 = render( /*#__PURE__*/React.createElement(Button, { onClick: function onClick() { Cascader.prompt({ defaultValue: ['1', '12'], cancelText: "cancel", confirmText: "confirm", dataSource: CASCADE_DATA, onCancel: cancel, onConfirm: confirm }); } }, "cascader prompt")), getByText = _render4.getByText; fireEvent.click(getByText('cascader prompt')); fireEvent.click(screen.getAllByDisplayValue('2')[0]); _context3.next = 8; return screen.findByText('杨浦区'); case 8: fireEvent.click(getByText('confirm')); currentValue = ['2']; items = parseItems(CASCADE_DATA, currentValue); expect(confirm).toHaveBeenCalledWith(currentValue, items); fireEvent.click(getByText('cancel')); expect(cancel).toHaveBeenCalled(); case 14: case "end": return _context3.stop(); } } }, _callee3); }))); });