zarm
Version:
基于 React 的移动端UI库
110 lines (98 loc) • 3.9 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _utils = require("ts-jest/utils");
var _createThumbnail = _interopRequireDefault(require("../../utils/createThumbnail"));
var _changeImageSize = _interopRequireDefault(require("../../utils/changeImageSize"));
var _utils2 = require("../../../../tests/utils");
jest.mock('../../utils/changeImageSize');
var mChangeImageSize = (0, _utils.mocked)(_changeImageSize.default);
describe('createThumbnail', function () {
var imageOnload;
var mCreateObjectURL = jest.fn();
afterAll(function () {
jest.resetAllMocks();
(0, _utils2.mockResetCreateObjectURL)();
});
beforeAll(function () {
Object.defineProperty(Image.prototype, 'onload', {
get: function get() {
return this._onload;
},
set: function set(fn) {
imageOnload = fn;
this._onload = fn;
}
});
(0, _utils2.mockCreateObjectURL)(mCreateObjectURL);
});
afterEach(function () {
jest.restoreAllMocks();
jest.clearAllMocks();
});
it('should create thumbnail for image', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
var createElementSpy, mFile, createThumbnailPromise, actual;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
mChangeImageSize.mockReturnValueOnce('data:,');
createElementSpy = jest.spyOn(document, 'createElement');
mFile = new File(['foo'], 'foo.png', {
type: 'image/png'
});
createThumbnailPromise = (0, _createThumbnail.default)({
file: mFile,
quality: 0,
fileType: 'image/png',
maxWidth: 100
});
imageOnload();
_context.next = 7;
return createThumbnailPromise;
case 7:
actual = _context.sent;
expect(actual).toEqual('data:,');
expect(createElementSpy).toBeCalledWith('img');
expect(mChangeImageSize).toBeCalledWith(expect.any(Image), 0, 'image/png');
expect(window.URL.createObjectURL).toBeCalledWith(mFile);
case 12:
case "end":
return _context.stop();
}
}
}, _callee);
})));
it('should return image url get from src if quality, maxWidth, maxHeight are falsy value', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
var createElementSpy, mFile, createThumbnailPromise, actual;
return _regenerator.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
mCreateObjectURL.mockReturnValueOnce('./test.png');
createElementSpy = jest.spyOn(document, 'createElement');
mFile = new File(['foo'], 'foo.png', {
type: 'image/png'
});
createThumbnailPromise = (0, _createThumbnail.default)({
file: mFile,
quality: 0,
fileType: 'image/png'
});
imageOnload();
_context2.next = 7;
return createThumbnailPromise;
case 7:
actual = _context2.sent;
expect(createElementSpy).toBeCalledWith('img');
expect(mChangeImageSize).not.toBeCalled();
expect(actual).toEqual("".concat(window.location.href, "test.png"));
case 11:
case "end":
return _context2.stop();
}
}
}, _callee2);
})));
});
;