global.stub_out_jquery(); set_global('page_params', { development_environment: true, }); set_global('compose_ui', {}); const { JSDOM } = require("jsdom"); const { window } = new JSDOM('
Hello world
'); const { DOMParser, document } = window; set_global('$', require('jquery')(window)); set_global('DOMParser', DOMParser); set_global('document', document); const copy_and_paste = zrequire('copy_and_paste'); // Super stripped down version of the code in the drag-mock library // https://github.com/andywer/drag-mock/blob/6d46c7c0ffd6a4d685e6612a90cd58cda80f30fc/src/DataTransfer.js const DataTransfer = function () { this.dataByFormat = {}; }; DataTransfer.prototype.getData = function (dataFormat) { return this.dataByFormat[dataFormat]; }; DataTransfer.prototype.setData = function (dataFormat, data) { this.dataByFormat[dataFormat] = data; }; const createPasteEvent = function () { const clipboardData = new DataTransfer(); const pasteEvent = new window.Event('paste'); pasteEvent.clipboardData = clipboardData; return $.Event(pasteEvent); }; run_test('paste_handler', () => { let input = ' love the Zulip Organization.'; assert.equal(copy_and_paste.paste_handler_converter(input), ' love the **Zulip** **Organization**.'); input = 'TheJSDOM
constructor';
assert.equal(copy_and_paste.paste_handler_converter(input),
'The `JSDOM` constructor');
input = 'https://zulip.readthedocs.io/en/latest/subsystems/logging.html';
assert.equal(copy_and_paste.paste_handler_converter(input),
'https://zulip.readthedocs.io/en/latest/subsystems/logging.html');
input = 'Contributing to Zulip';
assert.equal(copy_and_paste.paste_handler_converter(input),
'[Contributing to Zulip](https://zulip.readthedocs.io/en/latest/overview/contributing.html)');
input = '1. text';
assert.equal(copy_and_paste.paste_handler_converter(input),
'1. text');
input = 'text
'; let event = createPasteEvent(); event.originalEvent.clipboardData.setData('text/html', data); let insert_syntax_and_focus_called = false; compose_ui.insert_syntax_and_focus = function () { insert_syntax_and_focus_called = true; }; copy_and_paste.paste_handler(event); assert(insert_syntax_and_focus_called); data = ''; event = createPasteEvent(); event.originalEvent.clipboardData.setData('text/html', data); insert_syntax_and_focus_called = false; copy_and_paste.paste_handler(event); assert(!insert_syntax_and_focus_called); });
Test List: