From cd0fd49a83d9699e557d46ea4eaadc5f783ea83d Mon Sep 17 00:00:00 2001 From: Karl Stolley Date: Thu, 27 Jul 2023 12:03:32 -0500 Subject: [PATCH] copy_paste: Strip back tests to only test handler. This gets us out of the brittle business of trying to mock a complex event like "paste"--which mocking basically means we are testing against the mock more than a real event. The test name is also changed to clarify the handler being tested. See CZO discussion behind this change: https://chat.zulip.org/#narrow/stream/43-automated-testing/topic/mocking.20browser.20events.3F/near/1615110 --- web/tests/copy_and_paste.test.js | 52 ++------------------------------ 1 file changed, 2 insertions(+), 50 deletions(-) diff --git a/web/tests/copy_and_paste.test.js b/web/tests/copy_and_paste.test.js index 85c16e37dd..d85c95307e 100644 --- a/web/tests/copy_and_paste.test.js +++ b/web/tests/copy_and_paste.test.js @@ -2,43 +2,13 @@ const {strict: assert} = require("assert"); -const {JSDOM} = require("jsdom"); - -const {mock_esm, set_global, zrequire} = require("./lib/namespace"); -const jquery = require("./lib/real_jquery"); +const {zrequire} = require("./lib/namespace"); const {run_test} = require("./lib/test"); const {page_params} = require("./lib/zpage_params"); -const {window} = new JSDOM("

Hello world

"); - -const {document} = window; -const $ = jquery(window); - -const compose_ui = mock_esm("../src/compose_ui"); -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 -class DataTransfer { - dataByFormat = {}; - getData(dataFormat) { - return this.dataByFormat[dataFormat]; - } - setData(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", () => { +run_test("paste_handler_converter", () => { page_params.development_environment = true; let input = ' love the Zulip Organization.'; @@ -90,22 +60,4 @@ run_test("paste_handler", () => { copy_and_paste.paste_handler_converter(input), "Test list:\n* Item 1\n* Item 2", ); - - let data = "

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.ok(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.ok(!insert_syntax_and_focus_called); });