"use strict"; const {strict: assert} = require("assert"); const jquery = require("jquery"); const {JSDOM} = require("jsdom"); const {set_global, zrequire} = require("../zjsunit/namespace"); const {run_test} = require("../zjsunit/test"); set_global("page_params", { development_environment: true, }); const compose_ui = set_global("compose_ui", {}); const {window} = new JSDOM("
Hello world
"); const {DOMParser, document} = window; const $ = set_global("$", 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 new $.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: