mirror of https://github.com/zulip/zulip.git
158 lines
3.9 KiB
JavaScript
158 lines
3.9 KiB
JavaScript
zrequire('message_events');
|
|
zrequire('message_store');
|
|
zrequire('muting');
|
|
zrequire('people');
|
|
zrequire('recent_senders');
|
|
zrequire('stream_data');
|
|
zrequire('stream_topic_history');
|
|
zrequire('unread');
|
|
|
|
set_global('alert_words', {});
|
|
set_global('condense', {});
|
|
set_global('current_msg_list', {});
|
|
set_global('message_edit', {});
|
|
set_global('message_list', {});
|
|
set_global('notifications', {});
|
|
set_global('page_params', {});
|
|
set_global('pm_list', {});
|
|
set_global('stream_list', {});
|
|
set_global('unread_ui', {});
|
|
|
|
alert_words.process_message = () => {};
|
|
|
|
const alice = {
|
|
email: 'alice@example.com',
|
|
user_id: 32,
|
|
full_name: 'Alice Patel',
|
|
};
|
|
|
|
people.add(alice);
|
|
|
|
const denmark = {
|
|
subscribed: false,
|
|
name: 'Denmark',
|
|
stream_id: 101,
|
|
};
|
|
stream_data.add_sub(denmark);
|
|
|
|
function test_helper(side_effects) {
|
|
const events = [];
|
|
|
|
for (const side_effect of side_effects) {
|
|
const parts = side_effect.split('.');
|
|
const module = parts[0];
|
|
const field = parts[1];
|
|
|
|
global[module][field] = () => {
|
|
events.push(side_effect);
|
|
};
|
|
}
|
|
|
|
const self = {};
|
|
|
|
self.verify = () => {
|
|
assert.deepEqual(side_effects, events);
|
|
};
|
|
|
|
return self;
|
|
}
|
|
|
|
run_test('update_messages', () => {
|
|
const original_message = {
|
|
id: 111,
|
|
display_recipient: denmark.name,
|
|
flags: ['mentioned'],
|
|
sender_id: alice.user_id,
|
|
stream_id: denmark.stream_id,
|
|
topic: 'lunch',
|
|
type: 'stream',
|
|
};
|
|
|
|
message_store.add_message_metadata(original_message);
|
|
message_store.set_message_booleans(original_message);
|
|
|
|
assert.equal(original_message.mentioned, true);
|
|
assert.equal(original_message.unread, true);
|
|
|
|
assert.deepEqual(
|
|
stream_topic_history.get_recent_topic_names(denmark.stream_id),
|
|
['lunch']
|
|
);
|
|
|
|
unread.update_message_for_mention(original_message);
|
|
assert(unread.unread_mentions_counter.has(original_message.id));
|
|
|
|
const events = [
|
|
{
|
|
message_id: original_message.id,
|
|
flags: [],
|
|
orig_content: 'old stuff',
|
|
content: '**new content**',
|
|
rendered_content: '<b>new content</b>',
|
|
},
|
|
];
|
|
|
|
current_msg_list.get_row = (message_id) => {
|
|
assert.equal(message_id, 111);
|
|
return ['row-stub'];
|
|
};
|
|
current_msg_list.view = {};
|
|
|
|
let rendered_mgs;
|
|
|
|
current_msg_list.view.rerender_messages = (msgs_to_rerender, message_content_edited) => {
|
|
rendered_mgs = msgs_to_rerender;
|
|
assert.equal(message_content_edited, true);
|
|
};
|
|
|
|
const side_effects = [
|
|
'condense.un_cache_message_content_height',
|
|
'message_edit.end',
|
|
'notifications.received_messages',
|
|
'unread_ui.update_unread_counts',
|
|
'stream_list.update_streams_sidebar',
|
|
'pm_list.update_private_messages',
|
|
];
|
|
|
|
const helper = test_helper(side_effects);
|
|
|
|
page_params.realm_allow_edit_history = false;
|
|
message_list.narrowed = 'stub-to-ignore';
|
|
|
|
// TEST THIS:
|
|
message_events.update_messages(events);
|
|
|
|
assert(!unread.unread_mentions_counter.has(original_message.id));
|
|
|
|
helper.verify();
|
|
|
|
assert.deepEqual(rendered_mgs, [
|
|
{
|
|
alerted: false,
|
|
collapsed: false,
|
|
content: '<b>new content</b>',
|
|
display_recipient: denmark.name,
|
|
historical: false,
|
|
id: 111,
|
|
is_stream: true,
|
|
last_edit_timestamp: undefined,
|
|
mentioned: false,
|
|
mentioned_me_directly: false,
|
|
raw_content: '**new content**',
|
|
reactions: [],
|
|
reply_to: alice.email,
|
|
sender_email: alice.email,
|
|
sender_full_name: alice.full_name,
|
|
sender_id: 32,
|
|
sent_by_me: false,
|
|
starred: false,
|
|
stream: denmark.name,
|
|
stream_id: denmark.stream_id,
|
|
topic: 'lunch',
|
|
type: 'stream',
|
|
unread: true,
|
|
},
|
|
]);
|
|
|
|
});
|