@t7/utils
Version:
Utility methods for T7 components.
109 lines (95 loc) • 2.71 kB
JavaScript
var _ = require("./");
// Dependencies.
// Fake timers.
jest.useFakeTimers(); // Describe test.
describe('contentOnPaste', function () {
// ======
// Reset.
// ======
beforeEach(function () {
document.documentMode = null;
document.execCommand = null;
document.selection = null;
window.clipboardData = null;
}); // =============
// Dummy values.
// =============
var EMPTY_VALUE = '';
var EXAMPLE_VALUE = 'TEST\n TEST\n TEST';
var EXAMPLE_VALUE_HTML = 'TEST<br> TEST<br> TEST'; // ==========
// Overrides.
// ==========
Object.defineProperty(document, 'createElement', {
writable: true,
value: function value(tagName) {
if (tagName === 'textarea') {
return {
innerText: EXAMPLE_VALUE
};
}
}
}); // ==========================
// Test for IE `paste` event.
// ==========================
it('handles IE `paste` event', function () {
// Overrides.
document.documentMode = 8;
var pasteHTML = jest.fn();
document.selection = {
createRange: function createRange() {
return {
pasteHTML: pasteHTML
};
}
};
window.clipboardData = {
getData: function getData(x) {
if (x === 'text') {
return EXAMPLE_VALUE;
}
} // Dummy event.
};
var event = {}; // Fire event.
(0, _.contentOnPaste)(event);
expect(pasteHTML).toBeCalledWith(EXAMPLE_VALUE_HTML);
}); // ==============================
// Test for non-IE `paste` event.
// ==============================
it('handles non-IE `paste` event', function () {
// Overrides.
document.execCommand = jest.fn(); // Dummy event.
var event = {
clipboardData: {
getData: function getData(x) {
if (x === 'text/plain') {
return EXAMPLE_VALUE;
}
}
} // Fire event.
};
(0, _.contentOnPaste)(event);
expect(document.execCommand).toBeCalledWith('insertText', false, EXAMPLE_VALUE);
}); // ================================
// Test for fallback `paste` event.
// ================================
it('handles fallback `paste` event', function () {
// Dummy event.
var event = {
clipboardData: {
getData: function getData(x) {
if (x === 'text/plain') {
return EMPTY_VALUE;
}
}
},
currentTarget: {
// Add extra space.
innerText: ' ' + EXAMPLE_VALUE + ' '
} // Fire event.
};
(0, _.contentOnPaste)(event); // Fast-forward.
jest.runOnlyPendingTimers();
expect(event.currentTarget.innerText).toBe((0, _.trimMultiLine)(EXAMPLE_VALUE));
});
});
;