node_tests: Convert rewiremock.proxy uses to low level API.

This seems easier to understand and much easier to produce
automatically.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
Anders Kaseorg
2021-02-24 13:31:50 -08:00
committed by Tim Abbott
parent aee94f141d
commit 48c67700ed
9 changed files with 74 additions and 45 deletions

View File

@@ -53,6 +53,9 @@ set_global("navigator", _navigator);
set_global("notifications", _notifications);
set_global("reminder", reminder);
set_global("sent_messages", sent_messages);
rewiremock("../../static/js/rendered_markdown").with({
update_elements: () => {},
});
const local_message = set_global("local_message", {});
const transmit = set_global("transmit", {});
@@ -73,6 +76,8 @@ document.location.host = "foo.com";
const fake_now = 555;
MockDate.set(new Date(fake_now * 1000));
rewiremock.enable();
const compose_ui = zrequire("compose_ui");
const peer_data = zrequire("peer_data");
const util = zrequire("util");
@@ -85,11 +90,7 @@ zrequire("input_pill");
zrequire("user_pill");
const compose_pm_pill = zrequire("compose_pm_pill");
const echo = zrequire("echo");
const compose = rewiremock.proxy(() => zrequire("compose"), {
"../../static/js/rendered_markdown": {
update_elements: () => {},
},
});
const compose = zrequire("compose");
const upload = zrequire("upload");
const server_events_dispatch = zrequire("server_events_dispatch");
const settings_config = zrequire("settings_config");
@@ -1921,3 +1922,5 @@ test_ui("test_video_chat_button_toggle", () => {
});
MockDate.reset();
rewiremock.disable();

View File

@@ -13,6 +13,13 @@ const {set_global, zrequire} = require("../zjsunit/namespace");
const {run_test} = require("../zjsunit/test");
set_global("page_params", {});
rewiremock("katex").with({
renderToString: () => {
throw new Error("some-exception");
},
});
rewiremock.enable();
const markdown_config = zrequire("markdown_config");
zrequire("hash_util");
@@ -20,13 +27,7 @@ zrequire("message_store");
zrequire("stream_data");
zrequire("user_groups");
const markdown = rewiremock.proxy(() => zrequire("markdown"), {
katex: {
renderToString: () => {
throw new Error("some-exception");
},
},
});
const markdown = zrequire("markdown");
markdown.initialize([], markdown_config.get_helpers());
@@ -35,3 +36,5 @@ run_test("katex_throws_unexpected_exceptions", () => {
const message = {raw_content: "$$a$$"};
markdown.apply_markdown(message);
});
rewiremock.disable();

View File

@@ -25,6 +25,9 @@ const _navigator = {
userAgent: "Mozilla/5.0 AppleWebKit/537.36 Chrome/64.0.3282.167 Safari/537.36",
};
set_global("navigator", _navigator);
rewiremock("../../static/js/favicon").with({});
rewiremock.enable();
const muting = zrequire("muting");
const stream_data = zrequire("stream_data");
@@ -32,9 +35,7 @@ const ui = zrequire("ui");
const spoilers = zrequire("spoilers");
spoilers.hide_spoilers_in_notification = () => {};
const notifications = rewiremock.proxy(() => zrequire("notifications"), {
"../../static/js/favicon": {},
});
const notifications = zrequire("notifications");
// Not muted streams
const general = {
@@ -359,3 +360,5 @@ run_test("basic_notifications", (override) => {
assert.equal(n.size, 0);
assert.equal(last_closed_message_id, message_2.id);
});
rewiremock.disable();

View File

@@ -38,6 +38,9 @@ set_global("stream_popover", {
const stream_data = set_global("stream_data", {});
const ClipboardJS = noop;
rewiremock("clipboard").with(ClipboardJS);
rewiremock.enable();
zrequire("hash_util");
zrequire("narrow");
@@ -47,14 +50,9 @@ zrequire("presence");
zrequire("buddy_data");
const user_status = zrequire("user_status");
const message_edit = zrequire("message_edit");
function import_popovers() {
return rewiremock.proxy(() => zrequire("popovers"), {
clipboard: ClipboardJS,
});
}
// Bypass some scary code that runs when we import the module.
const popovers = with_field($.fn, "popover", noop, import_popovers);
const popovers = with_field($.fn, "popover", noop, () => zrequire("popovers"));
const alice = {
email: "alice@example.com",
@@ -267,3 +265,5 @@ test_ui("actions_popover", (override) => {
handler.call(target, e);
});
rewiremock.disable();

View File

@@ -31,15 +31,16 @@ const bot_data_params = {
const avatar = set_global("avatar", {});
const bot_data = zrequire("bot_data");
function ClipboardJS(sel) {
assert.equal(sel, "#copy_zuliprc");
}
const settings_bots = rewiremock.proxy(() => zrequire("settings_bots"), {
clipboard: ClipboardJS,
});
rewiremock("clipboard").with(ClipboardJS);
rewiremock.enable();
const bot_data = zrequire("bot_data");
const settings_bots = zrequire("settings_bots");
bot_data.initialize(bot_data_params);
@@ -198,3 +199,5 @@ run_test("can_create_new_bots", () => {
page_params.realm_bot_creation_policy = 3;
assert(!settings_bots.can_create_new_bots());
});
rewiremock.disable();

View File

@@ -78,14 +78,16 @@ set_global("realm_logo", _realm_logo);
set_global("ui_report", _ui_report);
set_global("ListWidget", _ListWidget);
// setup is only imported to set the
// setup.password_change_in_progress flag.
rewiremock("../../static/js/setup").with({});
rewiremock.enable();
const settings_config = zrequire("settings_config");
const settings_bots = zrequire("settings_bots");
const stream_data = zrequire("stream_data");
const settings_account = rewiremock.proxy(() => zrequire("settings_account"), {
// Setup is only imported to set the
// setup.password_change_in_progress flag.
"../../static/js/setup": {},
});
const settings_account = zrequire("settings_account");
const settings_org = zrequire("settings_org");
const dropdown_list_widget = zrequire("dropdown_list_widget");
@@ -1054,3 +1056,5 @@ run_test("misc", () => {
assert.equal(elem.text(), "translated: Disabled");
assert(elem.hasClass("text-warning"));
});
rewiremock.disable();

View File

@@ -38,9 +38,11 @@ page_params.custom_profile_field_types = {
},
};
const settings_profile_fields = rewiremock.proxy(() => zrequire("settings_profile_fields"), {
sortablejs: {default: {create: () => {}}},
});
rewiremock("sortablejs").with({default: {create: () => {}}});
rewiremock.enable();
const settings_profile_fields = zrequire("settings_profile_fields");
function test_populate(opts) {
const fields_data = opts.fields_data;
@@ -186,3 +188,5 @@ run_test("populate_profile_fields", () => {
is_admin: true,
});
});
rewiremock.disable();

View File

@@ -94,6 +94,13 @@ server_events.home_view_loaded = () => true;
resize.watch_manual_resize = () => {};
rewiremock("../../static/js/favicon").with({});
rewiremock("../../static/js/emojisets").with({
initialize: () => {},
});
rewiremock.enable();
const util = zrequire("util");
zrequire("hash_util");
@@ -119,9 +126,7 @@ zrequire("composebox_typeahead");
zrequire("narrow");
zrequire("search_suggestion");
zrequire("search");
rewiremock.proxy(() => zrequire("notifications"), {
"../../static/js/favicon": {},
});
zrequire("notifications");
zrequire("pm_list");
zrequire("keydown_util");
zrequire("stream_list");
@@ -172,9 +177,7 @@ run_test("initialize_everything", () => {
$("<audio>")[0] = "stub";
rewiremock.proxy(() => zrequire("ui_init"), {
"../../static/js/emojisets": {
initialize: () => {},
},
});
zrequire("ui_init");
});
rewiremock.disable();

View File

@@ -4,7 +4,7 @@ const {strict: assert} = require("assert");
const rewiremock = require("rewiremock/node");
const {set_global, zrequire} = require("../zjsunit/namespace");
const {reset_module, set_global, zrequire} = require("../zjsunit/namespace");
const {run_test} = require("../zjsunit/test");
const $ = require("../zjsunit/zjquery");
@@ -314,6 +314,8 @@ run_test("upload_files", () => {
assert($("#compose-textarea").val(), "user modified text");
});
rewiremock.enable();
run_test("uppy_config", () => {
let uppy_stub_called = false;
let uppy_set_meta_called = false;
@@ -356,7 +358,8 @@ run_test("uppy_config", () => {
};
}
uppy_stub.Plugin = plugin_stub;
upload = rewiremock.proxy(() => require("../../static/js/upload"), {"@uppy/core": uppy_stub});
rewiremock("@uppy/core").with(uppy_stub);
upload = reset_module("upload");
upload.setup_upload({mode: "compose"});
assert.equal(uppy_stub_called, true);
@@ -493,7 +496,8 @@ run_test("uppy_events", () => {
};
}
uppy_stub.Plugin = plugin_stub;
upload = rewiremock.proxy(() => require("../../static/js/upload"), {"@uppy/core": uppy_stub});
rewiremock("@uppy/core").with(uppy_stub);
upload = reset_module("upload");
upload.setup_upload({mode: "compose"});
assert.equal(Object.keys(callbacks).length, 5);
@@ -679,3 +683,5 @@ run_test("uppy_events", () => {
assert(compose_ui_replace_syntax_called);
assert.equal($("#compose-textarea").val(), "user modified text");
});
rewiremock.disable();