qt-public-ui
Version:
新设计规范下业务组件库
256 lines • 9.6 kB
JavaScript
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);
})));
});
});