mirror of
https://github.com/zulip/zulip.git
synced 2025-11-21 15:09:34 +00:00
ES and TypeScript modules are strict by default and don’t need this directive. ESLint will remind us to add it to new CommonJS files and remove it from ES and TypeScript modules. Signed-off-by: Anders Kaseorg <anders@zulip.com>
166 lines
4.3 KiB
JavaScript
166 lines
4.3 KiB
JavaScript
"use strict";
|
|
|
|
const events = require("./lib/events.js");
|
|
|
|
const event_fixtures = events.fixtures;
|
|
const test_user = events.test_user;
|
|
|
|
set_global("compose_fade", {});
|
|
set_global("stream_events", {});
|
|
set_global("subs", {});
|
|
|
|
zrequire("people");
|
|
zrequire("stream_data");
|
|
zrequire("server_events_dispatch");
|
|
|
|
people.add_active_user(test_user);
|
|
|
|
const dispatch = server_events_dispatch.dispatch_normal_event;
|
|
|
|
function test(label, f) {
|
|
stream_data.clear_subscriptions();
|
|
|
|
run_test(label, (override) => {
|
|
f(override);
|
|
});
|
|
}
|
|
|
|
test("add", (override) => {
|
|
const event = event_fixtures.subscription__add;
|
|
|
|
const sub = event.subscriptions[0];
|
|
const stream_id = sub.stream_id;
|
|
|
|
stream_data.add_sub({
|
|
stream_id,
|
|
name: sub.name,
|
|
});
|
|
|
|
global.with_stub((subscription_stub) => {
|
|
override("stream_events.mark_subscribed", subscription_stub.f);
|
|
dispatch(event);
|
|
const args = subscription_stub.get_args("sub", "subscribers");
|
|
assert.deepEqual(args.sub.stream_id, stream_id);
|
|
assert.deepEqual(args.subscribers, event.subscriptions[0].subscribers);
|
|
});
|
|
});
|
|
|
|
test("peer add/remove", (override) => {
|
|
let event = event_fixtures.subscription__peer_add;
|
|
|
|
stream_data.add_sub({
|
|
name: "devel",
|
|
stream_id: event.stream_id,
|
|
});
|
|
|
|
const subs_stub = global.make_stub();
|
|
override("subs.update_subscribers_ui", subs_stub.f);
|
|
|
|
const compose_fade_stub = global.make_stub();
|
|
override("compose_fade.update_faded_users", compose_fade_stub.f);
|
|
|
|
dispatch(event);
|
|
assert.equal(compose_fade_stub.num_calls, 1);
|
|
assert.equal(subs_stub.num_calls, 1);
|
|
|
|
event = event_fixtures.subscription__peer_remove;
|
|
dispatch(event);
|
|
assert.equal(compose_fade_stub.num_calls, 2);
|
|
assert.equal(subs_stub.num_calls, 2);
|
|
});
|
|
|
|
test("remove", (override) => {
|
|
const event = event_fixtures.subscription__remove;
|
|
const event_sub = event.subscriptions[0];
|
|
const stream_id = event_sub.stream_id;
|
|
|
|
const sub = {
|
|
stream_id,
|
|
name: event_sub.name,
|
|
};
|
|
|
|
stream_data.add_sub(sub);
|
|
|
|
global.with_stub((stub) => {
|
|
override("stream_events.mark_unsubscribed", stub.f);
|
|
dispatch(event);
|
|
const args = stub.get_args("sub");
|
|
assert.deepEqual(args.sub, sub);
|
|
});
|
|
});
|
|
|
|
test("update", (override) => {
|
|
const event = event_fixtures.subscription__update;
|
|
global.with_stub((stub) => {
|
|
override("stream_events.update_property", stub.f);
|
|
dispatch(event);
|
|
const args = stub.get_args("stream_id", "property", "value");
|
|
assert.deepEqual(args.stream_id, event.stream_id);
|
|
assert.deepEqual(args.property, event.property);
|
|
assert.deepEqual(args.value, event.value);
|
|
});
|
|
});
|
|
|
|
test("add error handling", (override) => {
|
|
// test blueslip errors/warns
|
|
const event = event_fixtures.subscription__add;
|
|
global.with_stub((stub) => {
|
|
override("blueslip.error", stub.f);
|
|
dispatch(event);
|
|
assert.deepEqual(stub.get_args("param").param, "Subscribing to unknown stream with ID 101");
|
|
});
|
|
});
|
|
|
|
test("peer event error handling (bad stream_ids)", () => {
|
|
const add_event = {
|
|
type: "subscription",
|
|
op: "peer_add",
|
|
stream_id: 99999,
|
|
};
|
|
|
|
blueslip.expect("warn", "Cannot find stream for peer_add: 99999");
|
|
dispatch(add_event);
|
|
blueslip.reset();
|
|
|
|
const remove_event = {
|
|
type: "subscription",
|
|
op: "peer_remove",
|
|
stream_id: 99999,
|
|
};
|
|
|
|
blueslip.expect("warn", "Cannot find stream for peer_remove: 99999");
|
|
dispatch(remove_event);
|
|
});
|
|
|
|
test("peer event error handling (add_subscriber)", (override) => {
|
|
stream_data.add_sub({
|
|
name: "devel",
|
|
stream_id: 1,
|
|
});
|
|
|
|
override("stream_data.add_subscriber", () => false);
|
|
|
|
const add_event = {
|
|
type: "subscription",
|
|
op: "peer_add",
|
|
stream_id: 1,
|
|
user_id: 99999, // id is irrelevant
|
|
};
|
|
|
|
blueslip.expect("warn", "Cannot process peer_add event");
|
|
dispatch(add_event);
|
|
blueslip.reset();
|
|
|
|
override("stream_data.remove_subscriber", () => false);
|
|
|
|
const remove_event = {
|
|
type: "subscription",
|
|
op: "peer_remove",
|
|
stream_id: 1,
|
|
user_id: 99999, // id is irrelevant
|
|
};
|
|
|
|
blueslip.expect("warn", "Cannot process peer_remove event.");
|
|
dispatch(remove_event);
|
|
});
|