mirror of
https://github.com/zulip/zulip.git
synced 2025-11-15 11:22:04 +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 event_fixtures = events.fixtures;
|
||||||
const test_message = events.test_message;
|
const test_message = events.test_message;
|
||||||
const test_user = events.test_user;
|
const test_user = events.test_user;
|
||||||
const test_streams = events.test_streams;
|
|
||||||
const typing_person1 = events.typing_person1;
|
const typing_person1 = events.typing_person1;
|
||||||
|
|
||||||
set_global("$", make_zjquery());
|
set_global("$", make_zjquery());
|
||||||
@@ -36,10 +35,8 @@ const message_edit = set_global("message_edit", {});
|
|||||||
const message_events = set_global("message_events", {});
|
const message_events = set_global("message_events", {});
|
||||||
const message_list = set_global("message_list", {});
|
const message_list = set_global("message_list", {});
|
||||||
const muting_ui = set_global("muting_ui", {});
|
const muting_ui = set_global("muting_ui", {});
|
||||||
const narrow_state = set_global("narrow_state", {});
|
|
||||||
const night_mode = set_global("night_mode", {});
|
const night_mode = set_global("night_mode", {});
|
||||||
const notifications = set_global("notifications", {});
|
const notifications = set_global("notifications", {});
|
||||||
const overlays = set_global("overlays", {});
|
|
||||||
const reactions = set_global("reactions", {});
|
const reactions = set_global("reactions", {});
|
||||||
const realm_icon = set_global("realm_icon", {});
|
const realm_icon = set_global("realm_icon", {});
|
||||||
const realm_logo = set_global("realm_logo", {});
|
const realm_logo = set_global("realm_logo", {});
|
||||||
@@ -84,7 +81,6 @@ const message_store = zrequire("message_store");
|
|||||||
const people = zrequire("people");
|
const people = zrequire("people");
|
||||||
const starred_messages = zrequire("starred_messages");
|
const starred_messages = zrequire("starred_messages");
|
||||||
const user_status = zrequire("user_status");
|
const user_status = zrequire("user_status");
|
||||||
const subs = zrequire("subs");
|
|
||||||
|
|
||||||
const emoji = zrequire("emoji", "shared/js/emoji");
|
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) => {
|
run_test("submessage", (override) => {
|
||||||
const event = event_fixtures.submessage;
|
const event = event_fixtures.submessage;
|
||||||
with_stub((stub) => {
|
with_stub((stub) => {
|
||||||
|
|||||||
@@ -17,12 +17,30 @@ const subs = set_global("subs", {});
|
|||||||
|
|
||||||
const peer_data = zrequire("peer_data");
|
const peer_data = zrequire("peer_data");
|
||||||
const people = zrequire("people");
|
const people = zrequire("people");
|
||||||
|
|
||||||
const stream_data = zrequire("stream_data");
|
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 server_events_dispatch = zrequire("server_events_dispatch");
|
||||||
|
|
||||||
|
const noop = function () {};
|
||||||
|
|
||||||
people.add_active_user(test_user);
|
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;
|
const dispatch = server_events_dispatch.dispatch_normal_event;
|
||||||
|
|
||||||
function test(label, f) {
|
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");
|
blueslip.expect("warn", "We have untracked user_ids: 3333,4444");
|
||||||
dispatch(remove_event);
|
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