qt-public-ui
Version:
新设计规范下业务组件库
255 lines • 10.5 kB
JavaScript
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
import _regeneratorRuntime from "@babel/runtime/regenerator";
import React from 'react';
import { mount } from 'enzyme';
import Export from '..';
import { UmProvider } from '../..';
import { act } from 'react-dom/test-utils';
import fileSaver from 'file-saver';
import { BrowserRouter } from 'react-router-dom';
describe('Export', function () {
var response = {
headers: {
'content-type': 'application/json'
},
data: {
code: 200,
data: 1 // not string
}
};
var params = {
relatedId: '1afhi23qufaaegrbjiortjbitqu3'
};
var mockExportFn = jest.fn().mockReturnValue(Promise.resolve(response));
it('can handle failure of export and pop "导出失败"', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
var mockExportFnErr, wrapper;
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
// returned without headers, should throw an err
mockExportFnErr = jest.fn().mockReturnValue(Promise.resolve({}));
wrapper = mount( /*#__PURE__*/React.createElement(Export, {
params: params,
exportFn: mockExportFnErr
}));
_context2.next = 4;
return act( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
return _regeneratorRuntime.wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
wrapper.find('.umui-export').simulate('click'); // click to trigger function
case 1:
case "end":
return _context.stop();
}
}, _callee);
})));
case 4:
wrapper.update();
expect(wrapper.find('.ant-popover-inner-content').text()).toBe('导出失败');
case 6:
case "end":
return _context2.stop();
}
}, _callee2);
})));
it('can return Url and download file', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
var spySaveAs, fileUrl, fileRes, mockExportFnFile, wrapper;
return _regeneratorRuntime.wrap(function _callee4$(_context4) {
while (1) switch (_context4.prev = _context4.next) {
case 0:
global.URL.createObjectURL = jest.fn();
spySaveAs = jest.spyOn(fileSaver, 'saveAs');
fileUrl = 'https://img.alicdn.com/tfs/TB1y0UNpYj1gK0jSZFOXXc7GpXa-190-202.png';
fileRes = {
headers: {
'content-type': 'application/json'
},
data: {
code: 200,
data: fileUrl
}
};
mockExportFnFile = jest.fn().mockReturnValue(Promise.resolve(fileRes));
wrapper = mount( /*#__PURE__*/React.createElement(Export, {
params: params,
exportFn: mockExportFnFile
}));
_context4.next = 8;
return act( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
return _regeneratorRuntime.wrap(function _callee3$(_context3) {
while (1) switch (_context3.prev = _context3.next) {
case 0:
wrapper.find('.umui-export').simulate('click'); // click to trigger function
case 1:
case "end":
return _context3.stop();
}
}, _callee3);
})));
case 8:
wrapper.update();
expect(spySaveAs).toHaveBeenCalledWith(fileUrl);
case 10:
case "end":
return _context4.stop();
}
}, _callee4);
})));
it('should pop "导出成功" when export success', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee6() {
var wrapper;
return _regeneratorRuntime.wrap(function _callee6$(_context6) {
while (1) switch (_context6.prev = _context6.next) {
case 0:
wrapper = mount( /*#__PURE__*/React.createElement(Export, {
params: params,
exportFn: mockExportFn
}));
_context6.next = 3;
return act( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {
return _regeneratorRuntime.wrap(function _callee5$(_context5) {
while (1) switch (_context5.prev = _context5.next) {
case 0:
wrapper.find('.umui-export').simulate('click'); // click to trigger function
case 1:
case "end":
return _context5.stop();
}
}, _callee5);
})));
case 3:
wrapper.update();
expect(wrapper.find('.ant-popover-inner-content').text()).toBe('导出成功');
case 5:
case "end":
return _context6.stop();
}
}, _callee6);
})));
it('should export expected params', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee8() {
var mockOnExport, mockExportFnWithPram, wrapper;
return _regeneratorRuntime.wrap(function _callee8$(_context8) {
while (1) switch (_context8.prev = _context8.next) {
case 0:
mockOnExport = jest.fn();
mockExportFnWithPram = jest.fn().mockImplementation(function (params) {
expect(params).toEqual(params);
return Promise.resolve(response);
});
wrapper = mount( /*#__PURE__*/React.createElement(Export, {
params: params,
exportFn: mockExportFnWithPram,
onExport: mockOnExport
}));
_context8.next = 5;
return act( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee7() {
return _regeneratorRuntime.wrap(function _callee7$(_context7) {
while (1) switch (_context7.prev = _context7.next) {
case 0:
wrapper.find('.umui-export').simulate('click'); // click to trigger function
case 1:
case "end":
return _context7.stop();
}
}, _callee7);
})));
case 5:
wrapper.update();
case 6:
case "end":
return _context8.stop();
}
}, _callee8);
})));
it('should listen on export', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee10() {
var mockOnExport, wrapper;
return _regeneratorRuntime.wrap(function _callee10$(_context10) {
while (1) switch (_context10.prev = _context10.next) {
case 0:
mockOnExport = jest.fn();
wrapper = mount( /*#__PURE__*/React.createElement(Export, {
params: params,
onExport: mockOnExport,
exportFn: mockExportFn
}));
_context10.next = 4;
return act( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee9() {
return _regeneratorRuntime.wrap(function _callee9$(_context9) {
while (1) switch (_context9.prev = _context9.next) {
case 0:
wrapper.find('.umui-export').simulate('click'); // click to trigger function
case 1:
case "end":
return _context9.stop();
}
}, _callee9);
})));
case 4:
wrapper.update();
expect(mockOnExport).toHaveBeenCalled();
case 6:
case "end":
return _context10.stop();
}
}, _callee10);
})));
it('can handle exsited report', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee13() {
var umProviderProps, wrapperExisted, popOverExt, wrapper, popOver;
return _regeneratorRuntime.wrap(function _callee13$(_context13) {
while (1) switch (_context13.prev = _context13.next) {
case 0:
umProviderProps = {
theme: 'analytical',
i18n: undefined,
exportConfig: {
exportFn: mockExportFn,
reportCenterURL: 'testReportCenter'
}
};
wrapperExisted = mount( /*#__PURE__*/React.createElement(UmProvider, umProviderProps, /*#__PURE__*/React.createElement(BrowserRouter, null, /*#__PURE__*/React.createElement(Export, {
params: params,
existedCode: 200
}), ",")));
_context13.next = 4;
return act( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee11() {
return _regeneratorRuntime.wrap(function _callee11$(_context11) {
while (1) switch (_context11.prev = _context11.next) {
case 0:
wrapperExisted.find('.umui-export').simulate('click'); // click to trigger function
case 1:
case "end":
return _context11.stop();
}
}, _callee11);
})));
case 4:
wrapperExisted.update();
popOverExt = wrapperExisted.find('.ant-popover');
expect(popOverExt.render()).toMatchSnapshot();
wrapper = mount( /*#__PURE__*/React.createElement(UmProvider, umProviderProps, /*#__PURE__*/React.createElement(BrowserRouter, null, /*#__PURE__*/React.createElement(Export, {
params: params,
existedCode: 1
}), ",")));
_context13.next = 10;
return act( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee12() {
return _regeneratorRuntime.wrap(function _callee12$(_context12) {
while (1) switch (_context12.prev = _context12.next) {
case 0:
wrapper.find('.umui-export').simulate('click'); // click to trigger function
case 1:
case "end":
return _context12.stop();
}
}, _callee12);
})));
case 10:
wrapper.update();
popOver = wrapper.find('.ant-popover');
expect(popOver.render()).toMatchSnapshot();
case 13:
case "end":
return _context13.stop();
}
}, _callee13);
})));
});