UNPKG

@t7/utils

Version:

Utility methods for T7 components.

109 lines (95 loc) 2.71 kB
"use strict"; 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)); }); });