qt-public-ui
Version:
新设计规范下业务组件库
162 lines (160 loc) • 4.49 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _react = _interopRequireDefault(require("react"));
var _enzyme = require("enzyme");
var _index = require("../../index");
var _testUtils = require("react-dom/test-utils");
describe('Select', function () {
function toggleOpen(wrapper) {
(0, _testUtils.act)(function () {
wrapper.find('.ant-select-selector').simulate('mousedown');
jest.runAllTimers();
});
wrapper.update();
}
beforeEach(function () {
jest.useFakeTimers();
});
afterEach(function () {
jest.useRealTimers();
});
it('select with icon renders correctly', function () {
var options_icons = [{
key: 1,
name: 'options1234567890',
icon: 'umicon-production'
}, {
key: 2,
name: 'options2',
icon: 'umicon-production'
}];
var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_index.Select, {
style: {
width: 200
},
onSelect: console.log,
options: options_icons
}));
toggleOpen(wrapper);
expect(wrapper.find('.ant-select-item')).toHaveLength(2);
wrapper.find('.ant-select-item').forEach(function (node) {
expect(node.find('svg').children().html()).toEqual("<use xlink:href=\"#umicon-production\"></use>");
});
// expect(wrapper.render()).toMatchSnapshot();
});
it('Select with extra parameters', function () {
var fn = jest.fn();
var options_extra = [{
key: 1,
name: 'options1',
extra: 'extra1'
}, {
key: 2,
name: 'options2',
extra: 'extra2'
}];
var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_index.Select, {
style: {
width: 200
},
onSelect: fn,
options: options_extra
}));
toggleOpen(wrapper);
wrapper.find('.ant-select-item').at(0).simulate('click');
expect(fn).toHaveBeenCalledWith(1, "extra1");
wrapper.find('.ant-select-item').at(1).simulate('click');
expect(fn).toHaveBeenCalledWith(2, "extra2");
});
it('Select options are loaded asynchronously', function () {
var options = [{
key: 1,
name: 'options1111111111111122222222'
}, {
key: 2,
name: 'options2'
}, {
key: 3,
name: 'options3'
}];
var fetchOptions = function fetchOptions() {
return new Promise(function (resolve) {
return setTimeout(function () {
resolve(options);
}, 300);
});
};
var fn = jest.fn().mockImplementation(fetchOptions);
var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_index.Select.Async, {
style: {
width: 200
},
onSelect: console.log,
fetch: fn
}));
expect(fn).toHaveBeenCalled();
});
it('Select options are loaded asynchronously(defer)', function () {
var options = [{
key: 1,
name: 'options1111111111111122222222'
}, {
key: 2,
name: 'options2'
}, {
key: 3,
name: 'options3'
}];
var fetchOptions = function fetchOptions() {
return new Promise(function (resolve) {
return setTimeout(function () {
resolve(options);
}, 300);
});
};
var fn = jest.fn().mockImplementation(fetchOptions);
var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_index.Select.Async, {
style: {
width: 200
},
onSelect: console.log,
fetch: fn,
defer: true
}));
toggleOpen(wrapper);
expect(fn).toHaveBeenCalled();
});
it('Select with all options', function () {
var options = [{
key: 1,
name: 'options1111111111111122222222'
}, {
key: 2,
name: 'options2'
}, {
key: 3,
name: 'options3'
}];
var fetchOptions = function fetchOptions() {
return new Promise(function (resolve) {
return setTimeout(function () {
resolve(options);
}, 300);
});
};
var fn = jest.fn().mockImplementation(fetchOptions);
var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_index.Select.Async, {
style: {
width: 200
},
onSelect: console.log,
fetch: fn,
allOption: {
key: 'all',
name: '全部'
}
}));
toggleOpen(wrapper);
expect(wrapper.find('.ant-select-item').at(0)).toMatchSnapshot();
});
});