2020-08-01 03:43:15 +02:00
|
|
|
"use strict";
|
|
|
|
|
2020-11-30 23:46:45 +01:00
|
|
|
const {strict: assert} = require("assert");
|
|
|
|
|
2021-02-28 00:39:51 +01:00
|
|
|
const rewiremock = require("rewiremock/node");
|
|
|
|
|
2021-02-21 23:03:05 +01:00
|
|
|
const {set_global, zrequire} = require("../zjsunit/namespace");
|
2020-12-01 00:39:47 +01:00
|
|
|
const {run_test} = require("../zjsunit/test");
|
2021-02-21 23:03:05 +01:00
|
|
|
const $ = require("../zjsunit/zjquery");
|
2020-12-01 00:02:16 +01:00
|
|
|
|
2021-02-23 14:37:26 +01:00
|
|
|
const noop = () => {};
|
2014-01-31 06:24:15 +01:00
|
|
|
|
2021-02-21 23:03:05 +01:00
|
|
|
set_global("document", {
|
|
|
|
to_$() {
|
|
|
|
return {
|
|
|
|
trigger() {},
|
|
|
|
};
|
|
|
|
},
|
|
|
|
});
|
2020-07-15 01:29:15 +02:00
|
|
|
set_global("addEventListener", noop);
|
2021-02-21 23:03:05 +01:00
|
|
|
|
2021-02-28 00:39:51 +01:00
|
|
|
const channel = {__esModule: true};
|
|
|
|
rewiremock("../../static/js/channel").with(channel);
|
2020-07-15 01:29:15 +02:00
|
|
|
set_global("home_msg_list", {
|
2016-08-05 21:42:19 +02:00
|
|
|
select_id: noop,
|
2020-07-20 22:18:43 +02:00
|
|
|
selected_id() {
|
2020-07-15 00:34:28 +02:00
|
|
|
return 1;
|
|
|
|
},
|
2014-01-31 06:24:15 +01:00
|
|
|
});
|
2020-07-15 01:29:15 +02:00
|
|
|
set_global("page_params", {test_suite: false});
|
2021-02-28 00:48:19 +01:00
|
|
|
rewiremock("../../static/js/reload_state").with({
|
2020-07-20 22:18:43 +02:00
|
|
|
is_in_progress() {
|
2020-07-15 00:34:28 +02:00
|
|
|
return false;
|
|
|
|
},
|
2016-03-31 08:39:01 +02:00
|
|
|
});
|
2014-01-31 06:24:15 +01:00
|
|
|
|
2017-07-01 14:21:20 +02:00
|
|
|
// we also directly write to pointer
|
2020-07-15 01:29:15 +02:00
|
|
|
set_global("pointer", {});
|
2017-07-01 14:21:20 +02:00
|
|
|
|
2020-07-15 01:29:15 +02:00
|
|
|
set_global("ui_report", {
|
2020-07-20 22:18:43 +02:00
|
|
|
hide_error() {
|
2020-07-15 00:34:28 +02:00
|
|
|
return false;
|
|
|
|
},
|
2020-07-20 22:18:43 +02:00
|
|
|
show_error() {
|
2020-07-15 00:34:28 +02:00
|
|
|
return false;
|
|
|
|
},
|
2017-03-23 20:37:08 +01:00
|
|
|
});
|
2016-08-05 21:42:19 +02:00
|
|
|
|
2020-12-01 23:21:38 +01:00
|
|
|
// Turn off $.now so we can import server_events.
|
|
|
|
set_global("$", {
|
|
|
|
now() {},
|
|
|
|
});
|
|
|
|
|
2021-02-28 00:39:51 +01:00
|
|
|
rewiremock.enable();
|
|
|
|
|
2020-12-01 23:21:38 +01:00
|
|
|
zrequire("message_store");
|
|
|
|
const server_events = zrequire("server_events");
|
|
|
|
|
|
|
|
set_global("$", $);
|
|
|
|
|
2017-07-01 14:21:20 +02:00
|
|
|
server_events.home_view_loaded();
|
|
|
|
|
2020-07-15 01:29:15 +02:00
|
|
|
run_test("message_event", () => {
|
2019-11-02 00:06:25 +01:00
|
|
|
const event = {
|
2020-07-15 01:29:15 +02:00
|
|
|
type: "message",
|
2017-07-01 14:21:20 +02:00
|
|
|
message: {
|
2020-07-15 01:29:15 +02:00
|
|
|
content: "hello",
|
2017-07-01 14:21:20 +02:00
|
|
|
},
|
|
|
|
flags: [],
|
|
|
|
};
|
|
|
|
|
2019-11-02 00:06:25 +01:00
|
|
|
let inserted;
|
2020-07-15 01:29:15 +02:00
|
|
|
set_global("message_events", {
|
2020-07-20 22:18:43 +02:00
|
|
|
insert_new_messages(messages) {
|
2017-07-01 14:21:20 +02:00
|
|
|
assert.equal(messages[0].content, event.message.content);
|
|
|
|
inserted = true;
|
|
|
|
},
|
|
|
|
});
|
|
|
|
|
|
|
|
server_events._get_events_success([event]);
|
|
|
|
assert(inserted);
|
2018-05-15 12:40:07 +02:00
|
|
|
});
|
2017-07-01 14:21:20 +02:00
|
|
|
|
2016-08-05 21:42:19 +02:00
|
|
|
// Start blueslip tests here
|
|
|
|
|
2021-02-23 14:37:26 +01:00
|
|
|
const setup = () => {
|
2014-01-31 06:24:15 +01:00
|
|
|
server_events.home_view_loaded();
|
2020-07-15 01:29:15 +02:00
|
|
|
set_global("message_events", {
|
2020-07-20 22:18:43 +02:00
|
|
|
insert_new_messages() {
|
2020-10-07 09:58:04 +02:00
|
|
|
throw new Error("insert error");
|
2016-08-05 21:42:19 +02:00
|
|
|
},
|
2020-07-20 22:18:43 +02:00
|
|
|
update_messages() {
|
2020-10-07 09:58:04 +02:00
|
|
|
throw new Error("update error");
|
2016-12-03 23:17:57 +01:00
|
|
|
},
|
2016-08-05 21:42:19 +02:00
|
|
|
});
|
2020-07-15 01:29:15 +02:00
|
|
|
set_global("stream_events", {
|
2020-07-20 22:18:43 +02:00
|
|
|
update_property() {
|
2020-10-07 09:58:04 +02:00
|
|
|
throw new Error("subs update error");
|
2016-12-03 23:17:57 +01:00
|
|
|
},
|
2016-08-05 21:42:19 +02:00
|
|
|
});
|
2014-01-31 06:24:15 +01:00
|
|
|
};
|
|
|
|
|
2020-07-15 01:29:15 +02:00
|
|
|
run_test("event_dispatch_error", () => {
|
2018-07-10 10:16:42 +02:00
|
|
|
setup();
|
2014-01-31 06:24:15 +01:00
|
|
|
|
2020-07-15 01:29:15 +02:00
|
|
|
const data = {events: [{type: "stream", op: "update", id: 1, other: "thing"}]};
|
2021-02-23 14:37:26 +01:00
|
|
|
channel.get = (options) => {
|
2014-01-31 06:24:15 +01:00
|
|
|
options.success(data);
|
|
|
|
};
|
|
|
|
|
2020-07-15 01:29:15 +02:00
|
|
|
blueslip.expect("error", "Failed to process an event\nsubs update error");
|
2018-07-10 10:16:42 +02:00
|
|
|
|
2014-01-31 06:24:15 +01:00
|
|
|
server_events.restart_get_events();
|
|
|
|
|
2020-07-15 01:29:15 +02:00
|
|
|
const logs = blueslip.get_test_logs("error");
|
2018-07-10 10:16:42 +02:00
|
|
|
assert.equal(logs.length, 1);
|
2020-07-15 01:29:15 +02:00
|
|
|
assert.equal(logs[0].more_info.event.type, "stream");
|
|
|
|
assert.equal(logs[0].more_info.event.op, "update");
|
2018-12-07 22:14:28 +01:00
|
|
|
assert.equal(logs[0].more_info.event.id, 1);
|
|
|
|
assert.equal(logs[0].more_info.other, undefined);
|
2018-05-15 12:40:07 +02:00
|
|
|
});
|
2014-01-31 06:24:15 +01:00
|
|
|
|
2020-07-15 01:29:15 +02:00
|
|
|
run_test("event_new_message_error", () => {
|
2018-07-10 10:16:42 +02:00
|
|
|
setup();
|
2014-01-31 06:24:15 +01:00
|
|
|
|
2020-07-15 01:29:15 +02:00
|
|
|
const data = {events: [{type: "message", id: 1, other: "thing", message: {}}]};
|
2021-02-23 14:37:26 +01:00
|
|
|
channel.get = (options) => {
|
2014-01-31 06:24:15 +01:00
|
|
|
options.success(data);
|
|
|
|
};
|
|
|
|
|
2020-07-15 01:29:15 +02:00
|
|
|
blueslip.expect("error", "Failed to insert new messages\ninsert error");
|
2018-07-10 10:16:42 +02:00
|
|
|
|
2014-01-31 06:24:15 +01:00
|
|
|
server_events.restart_get_events();
|
|
|
|
|
2020-07-15 01:29:15 +02:00
|
|
|
const logs = blueslip.get_test_logs("error");
|
2018-07-10 10:16:42 +02:00
|
|
|
assert.equal(logs.length, 1);
|
|
|
|
assert.equal(logs[0].more_info, undefined);
|
2018-05-15 12:40:07 +02:00
|
|
|
});
|
2014-01-31 06:24:15 +01:00
|
|
|
|
2020-07-15 01:29:15 +02:00
|
|
|
run_test("event_edit_message_error", () => {
|
2018-07-10 10:16:42 +02:00
|
|
|
setup();
|
2020-07-15 01:29:15 +02:00
|
|
|
const data = {events: [{type: "update_message", id: 1, other: "thing"}]};
|
2021-02-23 14:37:26 +01:00
|
|
|
channel.get = (options) => {
|
2014-01-31 06:24:15 +01:00
|
|
|
options.success(data);
|
|
|
|
};
|
2020-07-15 01:29:15 +02:00
|
|
|
blueslip.expect("error", "Failed to update messages\nupdate error");
|
2014-01-31 06:24:15 +01:00
|
|
|
|
|
|
|
server_events.restart_get_events();
|
|
|
|
|
2020-07-15 01:29:15 +02:00
|
|
|
const logs = blueslip.get_test_logs("error");
|
2018-07-10 10:16:42 +02:00
|
|
|
assert.equal(logs.length, 1);
|
|
|
|
assert.equal(logs[0].more_info, undefined);
|
2018-05-15 12:40:07 +02:00
|
|
|
});
|
2021-02-28 00:39:51 +01:00
|
|
|
rewiremock.disable();
|