UNPKG

qt-public-ui

Version:

新设计规范下业务组件库

256 lines 9.6 kB
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator"; import _regeneratorRuntime from "@babel/runtime/regenerator"; import React, { useState } from 'react'; import { mount } from 'enzyme'; import MultiSelect from '..'; import { act } from 'react-dom/test-utils'; describe('MultiSelect', function () { var Option = MultiSelect.Option; var options = new Array(5).fill(1).map(function (_, index) { return { label: "option-" + index, value: "value-" + index }; }); var getDropdown = /*#__PURE__*/function () { var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(wrapper) { return _regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: _context2.next = 2; return act( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() { return _regeneratorRuntime.wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: _context.next = 2; return wrapper.find('.umui-multi-select').simulate('click'); case 2: wrapper.update(); case 3: case "end": return _context.stop(); } }, _callee); }))); case 2: return _context2.abrupt("return", wrapper.find('.umui-multi-select-dropdown')); case 3: case "end": return _context2.stop(); } }, _callee2); })); return function getDropdown(_x) { return _ref.apply(this, arguments); }; }(); it('can select and deselect all', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() { var wrapper, dropdown, allSelection; return _regeneratorRuntime.wrap(function _callee3$(_context3) { while (1) switch (_context3.prev = _context3.next) { case 0: wrapper = mount( /*#__PURE__*/React.createElement(MultiSelect, { useAllSelection: true }, options.map(function (o) { return /*#__PURE__*/React.createElement(Option, { key: o.value, value: o.value }, o.label); }))); _context3.next = 3; return getDropdown(wrapper); case 3: dropdown = _context3.sent; expect(dropdown.find('li')).toHaveLength(5); // 5 options in dropdown list allSelection = dropdown.find('.use-all-selection'); expect(allSelection.text()).toBe('全部'); act(function () { allSelection.simulate('click'); }); wrapper.update(); expect(wrapper.find('.ant-tag')).toHaveLength(5); act(function () { allSelection.simulate('click'); }); wrapper.update(); expect(wrapper.find('.ant-tag')).toHaveLength(0); case 13: case "end": return _context3.stop(); } }, _callee3); }))); it('can search options by option', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() { var Demo, wrapper, searchInput; return _regeneratorRuntime.wrap(function _callee4$(_context4) { while (1) switch (_context4.prev = _context4.next) { case 0: Demo = function Demo() { var _useState = useState([]), selected = _useState[0], setSelected = _useState[1]; return /*#__PURE__*/React.createElement(MultiSelect, { value: selected, optionFilterProp: "children", onChange: function onChange(value) { setSelected(value); }, showSearch: true }, options.map(function (o) { return /*#__PURE__*/React.createElement(Option, { key: o.value, value: o.value }, o.label); })); }; wrapper = mount( /*#__PURE__*/React.createElement(Demo, null)); _context4.next = 4; return getDropdown(wrapper); case 4: searchInput = wrapper.find('.search-box input'); act(function () { searchInput.simulate('change', { target: { value: 'option-1' } }); }); wrapper.update(); expect(wrapper.find('li')).toHaveLength(1); expect(wrapper.find('li').text()).toBe('option-1'); case 9: case "end": return _context4.stop(); } }, _callee4); }))); it('can render customized content', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5() { var wrapper, dropdown, allSelection; return _regeneratorRuntime.wrap(function _callee5$(_context5) { while (1) switch (_context5.prev = _context5.next) { case 0: wrapper = mount( /*#__PURE__*/React.createElement(MultiSelect, { renderSelectedContent: function renderSelectedContent(selectedList) { return /*#__PURE__*/React.createElement("div", { className: "options-seperator" }, "\u5DF2\u9009\u62E9", selectedList.length, "\u4E2A\u4E8B\u4EF6"); }, useAllSelection: true }, options.map(function (o) { return /*#__PURE__*/React.createElement(Option, { key: o.value, value: o.value }, o.label); }))); _context5.next = 3; return getDropdown(wrapper); case 3: dropdown = _context5.sent; allSelection = dropdown.find('.use-all-selection'); act(function () { allSelection.simulate('click'); }); wrapper.update(); expect(wrapper.text()).toBe('已选择5个事件'); case 8: case "end": return _context5.stop(); } }, _callee5); }))); it('can be disabled', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee6() { var wrapper, dropdown; return _regeneratorRuntime.wrap(function _callee6$(_context6) { while (1) switch (_context6.prev = _context6.next) { case 0: wrapper = mount( /*#__PURE__*/React.createElement(MultiSelect, { disabled: true }, options.map(function (o) { return /*#__PURE__*/React.createElement(Option, { key: o.value, value: o.value }, o.label); }))); _context6.next = 3; return getDropdown(wrapper); case 3: dropdown = _context6.sent; expect(dropdown.exists()).toBeFalsy(); case 5: case "end": return _context6.stop(); } }, _callee6); }))); it('can have separator', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee7() { var wrapper, dropdown, eptTxt; return _regeneratorRuntime.wrap(function _callee7$(_context7) { while (1) switch (_context7.prev = _context7.next) { case 0: wrapper = mount( /*#__PURE__*/React.createElement(MultiSelect, { seperator: true, useAllSelection: true }, options.map(function (o) { return /*#__PURE__*/React.createElement(Option, { key: o.value, value: o.value }, o.label); }))); _context7.next = 3; return getDropdown(wrapper); case 3: dropdown = _context7.sent; act(function () { dropdown.find('.use-all-selection').simulate('click'); }); wrapper.update(); eptTxt = options.map(function (o) { return o.label; }).join('、'); expect(wrapper.text()).toBe(eptTxt); case 8: case "end": return _context7.stop(); } }, _callee7); }))); describe('MultiSelect.Option', function () { var selectedValue = ['value-disabled']; var Demo = function Demo() { var opts = [/*#__PURE__*/React.createElement(Option, { key: "option-disabled", value: "value-disabled", disabled: true }, "option-disabled")].concat(options.map(function (o) { return /*#__PURE__*/React.createElement(Option, { key: o.value, value: o.value }, o.label); })); return /*#__PURE__*/React.createElement(MultiSelect, { defaultValue: selectedValue }, opts); }; var wrapper = mount( /*#__PURE__*/React.createElement(Demo, null)); it('can be disabled', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee8() { var dropdown; return _regeneratorRuntime.wrap(function _callee8$(_context8) { while (1) switch (_context8.prev = _context8.next) { case 0: _context8.next = 2; return getDropdown(wrapper); case 2: dropdown = _context8.sent; act(function () { dropdown.find('li').first().simulate('click'); }); dropdown.update(); expect(wrapper.text()).toBe('option-disabled'); case 6: case "end": return _context8.stop(); } }, _callee8); }))); }); });