mirror of
https://github.com/zulip/zulip.git
synced 2025-11-03 05:23:35 +00:00
node tests: Move streams tests to dispatch_subs.
There is also some code cleanup here--in dispatch_subs, we don't stub stream_data, so it's easier to write deeper tests that actually validate the data changes.
This commit is contained in:
committed by
Steve Howell
parent
90ca1ded13
commit
fcf5a66aeb
@@ -14,7 +14,6 @@ const events = require("./lib/events");
|
||||
const event_fixtures = events.fixtures;
|
||||
const test_message = events.test_message;
|
||||
const test_user = events.test_user;
|
||||
const test_streams = events.test_streams;
|
||||
const typing_person1 = events.typing_person1;
|
||||
|
||||
set_global("$", make_zjquery());
|
||||
@@ -36,10 +35,8 @@ const message_edit = set_global("message_edit", {});
|
||||
const message_events = set_global("message_events", {});
|
||||
const message_list = set_global("message_list", {});
|
||||
const muting_ui = set_global("muting_ui", {});
|
||||
const narrow_state = set_global("narrow_state", {});
|
||||
const night_mode = set_global("night_mode", {});
|
||||
const notifications = set_global("notifications", {});
|
||||
const overlays = set_global("overlays", {});
|
||||
const reactions = set_global("reactions", {});
|
||||
const realm_icon = set_global("realm_icon", {});
|
||||
const realm_logo = set_global("realm_logo", {});
|
||||
@@ -84,7 +81,6 @@ const message_store = zrequire("message_store");
|
||||
const people = zrequire("people");
|
||||
const starred_messages = zrequire("starred_messages");
|
||||
const user_status = zrequire("user_status");
|
||||
const subs = zrequire("subs");
|
||||
|
||||
const emoji = zrequire("emoji", "shared/js/emoji");
|
||||
|
||||
@@ -544,74 +540,6 @@ run_test("restart", (override) => {
|
||||
});
|
||||
});
|
||||
|
||||
run_test("stream", (override) => {
|
||||
let event = event_fixtures.stream__update;
|
||||
|
||||
with_stub((stub) => {
|
||||
override(stream_events, "update_property", stub.f);
|
||||
override(settings_streams, "update_default_streams_table", noop);
|
||||
dispatch(event);
|
||||
const args = stub.get_args("stream_id", "property", "value");
|
||||
assert_same(args.stream_id, event.stream_id);
|
||||
assert_same(args.property, event.property);
|
||||
assert_same(args.value, event.value);
|
||||
});
|
||||
|
||||
// stream create
|
||||
event = event_fixtures.stream__create;
|
||||
with_stub((stub) => {
|
||||
override(stream_data, "create_streams", stub.f);
|
||||
override(stream_data, "get_sub_by_id", noop);
|
||||
override(stream_data, "update_calculated_fields", noop);
|
||||
override(subs, "add_sub_to_table", noop);
|
||||
override(overlays, "streams_open", () => true);
|
||||
dispatch(event);
|
||||
const args = stub.get_args("streams");
|
||||
assert_same(
|
||||
args.streams.map((stream) => stream.stream_id),
|
||||
[101, 102],
|
||||
);
|
||||
});
|
||||
|
||||
// stream delete
|
||||
event = event_fixtures.stream__delete;
|
||||
with_stub((stub) => {
|
||||
override(subs, "remove_stream", noop);
|
||||
override(stream_data, "delete_sub", noop);
|
||||
override(settings_streams, "update_default_streams_table", noop);
|
||||
override(stream_data, "remove_default_stream", noop);
|
||||
|
||||
const devel_id = test_streams.devel.stream_id;
|
||||
|
||||
override(stream_data, "get_sub_by_id", (id) =>
|
||||
id === devel_id ? {subscribed: true} : {subscribed: false},
|
||||
);
|
||||
|
||||
narrow_state.is_for_stream_id = () => true;
|
||||
|
||||
let updated = false;
|
||||
override(current_msg_list, "update_trailing_bookend", () => {
|
||||
updated = true;
|
||||
});
|
||||
|
||||
override(stream_list, "remove_sidebar_row", stub.f);
|
||||
dispatch(event);
|
||||
const args = stub.get_args("stream_id");
|
||||
assert_same(args.stream_id, devel_id);
|
||||
assert_same(updated, true);
|
||||
|
||||
override(settings_org, "sync_realm_settings", noop);
|
||||
override(stream_list, "remove_sidebar_row", noop);
|
||||
page_params.realm_notifications_stream_id = devel_id;
|
||||
dispatch(event);
|
||||
assert_same(page_params.realm_notifications_stream_id, -1);
|
||||
|
||||
page_params.realm_signup_notifications_stream_id = devel_id;
|
||||
dispatch(event);
|
||||
assert_same(page_params.realm_signup_notifications_stream_id, -1);
|
||||
});
|
||||
});
|
||||
|
||||
run_test("submessage", (override) => {
|
||||
const event = event_fixtures.submessage;
|
||||
with_stub((stub) => {
|
||||
|
||||
@@ -17,12 +17,30 @@ const subs = set_global("subs", {});
|
||||
|
||||
const peer_data = zrequire("peer_data");
|
||||
const people = zrequire("people");
|
||||
|
||||
const stream_data = zrequire("stream_data");
|
||||
|
||||
set_global("current_msg_list", {});
|
||||
const narrow_state = set_global("narrow_state", {});
|
||||
const page_params = set_global("page_params", {});
|
||||
const overlays = set_global("overlays", {});
|
||||
const settings_org = set_global("settings_org", {});
|
||||
const settings_streams = set_global("settings_streams", {});
|
||||
const stream_list = set_global("stream_list", {});
|
||||
|
||||
const server_events_dispatch = zrequire("server_events_dispatch");
|
||||
|
||||
const noop = function () {};
|
||||
|
||||
people.add_active_user(test_user);
|
||||
|
||||
const me = {
|
||||
email: "me@zulip.com",
|
||||
full_name: "Me Myself",
|
||||
user_id: 101,
|
||||
};
|
||||
people.add_active_user(me);
|
||||
people.initialize_current_user(me.user_id);
|
||||
|
||||
const dispatch = server_events_dispatch.dispatch_normal_event;
|
||||
|
||||
function test(label, f) {
|
||||
@@ -149,3 +167,99 @@ test("peer event error handling (bad stream_ids/user_ids)", (override) => {
|
||||
blueslip.expect("warn", "We have untracked user_ids: 3333,4444");
|
||||
dispatch(remove_event);
|
||||
});
|
||||
|
||||
test("stream update", (override) => {
|
||||
const event = event_fixtures.stream__update;
|
||||
|
||||
with_stub((stub) => {
|
||||
override(stream_events, "update_property", stub.f);
|
||||
override(settings_streams, "update_default_streams_table", noop);
|
||||
dispatch(event);
|
||||
const args = stub.get_args("stream_id", "property", "value");
|
||||
assert.equal(args.stream_id, event.stream_id);
|
||||
assert.equal(args.property, event.property);
|
||||
assert.equal(args.value, event.value);
|
||||
});
|
||||
});
|
||||
|
||||
test("stream create", (override) => {
|
||||
const event = event_fixtures.stream__create;
|
||||
with_stub((stub) => {
|
||||
override(stream_data, "create_streams", stub.f);
|
||||
override(stream_data, "get_sub_by_id", noop);
|
||||
override(stream_data, "update_calculated_fields", noop);
|
||||
override(subs, "add_sub_to_table", noop);
|
||||
override(overlays, "streams_open", () => true);
|
||||
dispatch(event);
|
||||
const args = stub.get_args("streams");
|
||||
assert.deepEqual(
|
||||
args.streams.map((stream) => stream.stream_id),
|
||||
[101, 102],
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
test("stream delete (normal)", (override) => {
|
||||
const event = event_fixtures.stream__delete;
|
||||
|
||||
for (const stream of event.streams) {
|
||||
stream_data.add_sub(stream);
|
||||
}
|
||||
|
||||
stream_data.subscribe_myself(event.streams[0]);
|
||||
|
||||
override(stream_data, "delete_sub", noop);
|
||||
override(settings_streams, "update_default_streams_table", noop);
|
||||
|
||||
narrow_state.is_for_stream_id = () => true;
|
||||
|
||||
let bookend_updates = 0;
|
||||
override(current_msg_list, "update_trailing_bookend", () => {
|
||||
bookend_updates += 1;
|
||||
});
|
||||
|
||||
const removed_stream_ids = [];
|
||||
|
||||
override(subs, "remove_stream", (stream_id) => {
|
||||
removed_stream_ids.push(stream_id);
|
||||
});
|
||||
|
||||
let removed_sidebar_rows = 0;
|
||||
override(stream_list, "remove_sidebar_row", () => {
|
||||
removed_sidebar_rows += 1;
|
||||
});
|
||||
|
||||
dispatch(event);
|
||||
|
||||
assert.deepEqual(removed_stream_ids, [event.streams[0].stream_id, event.streams[1].stream_id]);
|
||||
|
||||
// We should possibly be able to make a single call to
|
||||
// update_trailing_bookend, but we currently do it for each stream.
|
||||
assert.equal(bookend_updates, 2);
|
||||
|
||||
assert.equal(removed_sidebar_rows, 1);
|
||||
});
|
||||
|
||||
test("stream delete (special streams)", (override) => {
|
||||
const event = event_fixtures.stream__delete;
|
||||
|
||||
for (const stream of event.streams) {
|
||||
stream_data.add_sub(stream);
|
||||
}
|
||||
|
||||
// sanity check data
|
||||
assert.equal(event.streams.length, 2);
|
||||
page_params.realm_notifications_stream_id = event.streams[0].stream_id;
|
||||
page_params.realm_signup_notifications_stream_id = event.streams[1].stream_id;
|
||||
|
||||
override(subs, "remove_stream", noop);
|
||||
override(settings_org, "sync_realm_settings", noop);
|
||||
override(settings_streams, "update_default_streams_table", noop);
|
||||
override(current_msg_list, "update_trailing_bookend", noop);
|
||||
override(stream_list, "remove_sidebar_row", noop);
|
||||
|
||||
dispatch(event);
|
||||
|
||||
assert.equal(page_params.realm_notifications_stream_id, -1);
|
||||
assert.equal(page_params.realm_signup_notifications_stream_id, -1);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user