zulip/frontend_tests/node_tests/server_events.js

139 lines
3.3 KiB
JavaScript

"use strict";
const noop = function () {};
set_global("document", {});
set_global("addEventListener", noop);
global.stub_out_jquery();
zrequire("message_store");
zrequire("server_events_dispatch");
zrequire("server_events");
zrequire("sent_messages");
set_global("channel", {});
set_global("home_msg_list", {
select_id: noop,
selected_id() {
return 1;
},
});
set_global("page_params", {test_suite: false});
set_global("reload_state", {
is_in_progress() {
return false;
},
});
// we also directly write to pointer
set_global("pointer", {});
set_global("echo", {
process_from_server(messages) {
return messages;
},
update_realm_filter_rules: noop,
});
set_global("ui_report", {
hide_error() {
return false;
},
show_error() {
return false;
},
});
server_events.home_view_loaded();
run_test("message_event", () => {
const event = {
type: "message",
message: {
content: "hello",
},
flags: [],
};
let inserted;
set_global("message_events", {
insert_new_messages(messages) {
assert.equal(messages[0].content, event.message.content);
inserted = true;
},
});
server_events._get_events_success([event]);
assert(inserted);
});
// Start blueslip tests here
const setup = function () {
server_events.home_view_loaded();
set_global("message_events", {
insert_new_messages() {
throw Error("insert error");
},
update_messages() {
throw Error("update error");
},
});
set_global("stream_events", {
update_property() {
throw Error("subs update error");
},
});
};
run_test("event_dispatch_error", () => {
setup();
const data = {events: [{type: "stream", op: "update", id: 1, other: "thing"}]};
global.channel.get = function (options) {
options.success(data);
};
blueslip.expect("error", "Failed to process an event\nsubs update error");
server_events.restart_get_events();
const logs = blueslip.get_test_logs("error");
assert.equal(logs.length, 1);
assert.equal(logs[0].more_info.event.type, "stream");
assert.equal(logs[0].more_info.event.op, "update");
assert.equal(logs[0].more_info.event.id, 1);
assert.equal(logs[0].more_info.other, undefined);
});
run_test("event_new_message_error", () => {
setup();
const data = {events: [{type: "message", id: 1, other: "thing", message: {}}]};
global.channel.get = function (options) {
options.success(data);
};
blueslip.expect("error", "Failed to insert new messages\ninsert error");
server_events.restart_get_events();
const logs = blueslip.get_test_logs("error");
assert.equal(logs.length, 1);
assert.equal(logs[0].more_info, undefined);
});
run_test("event_edit_message_error", () => {
setup();
const data = {events: [{type: "update_message", id: 1, other: "thing"}]};
global.channel.get = function (options) {
options.success(data);
};
blueslip.expect("error", "Failed to update messages\nupdate error");
server_events.restart_get_events();
const logs = blueslip.get_test_logs("error");
assert.equal(logs.length, 1);
assert.equal(logs[0].more_info, undefined);
});