mirror of
https://github.com/zulip/zulip.git
synced 2025-11-12 18:06:44 +00:00
Previously the sender was not included in display_recipient when a private message was locally echoed. This broke the copy conversation link functionality, if the user try to copy the link immedeatly after sending the message. This issue is present only during local echo. This was fixed by including the recipient of the user during local echo. Fixes #13547.
227 lines
6.3 KiB
JavaScript
227 lines
6.3 KiB
JavaScript
set_global('$', global.make_zjquery());
|
|
set_global('markdown', {});
|
|
set_global('local_message', {
|
|
now: () => "timestamp",
|
|
});
|
|
set_global('page_params', {});
|
|
set_global('blueslip', global.make_zblueslip());
|
|
|
|
zrequire('echo');
|
|
zrequire('util');
|
|
zrequire('people');
|
|
|
|
let disparities = [];
|
|
let messages_to_rerender = [];
|
|
|
|
set_global('sent_messages', {
|
|
mark_disparity: (local_id) => {
|
|
disparities.push(local_id);
|
|
},
|
|
});
|
|
|
|
set_global('message_store', {
|
|
update_booleans: () => {},
|
|
});
|
|
|
|
set_global('alert_words', {
|
|
process_message: () => {},
|
|
});
|
|
|
|
set_global('home_msg_list', {
|
|
view: {
|
|
rerender_messages: (msgs) => {
|
|
messages_to_rerender = msgs;
|
|
},
|
|
},
|
|
});
|
|
|
|
set_global('message_list', {});
|
|
|
|
set_global('current_msg_list', '');
|
|
|
|
run_test('process_from_server for un-echoed messages', () => {
|
|
const waiting_for_ack = {};
|
|
const server_messages = [
|
|
{
|
|
local_id: 100.1,
|
|
},
|
|
];
|
|
echo._patch_waiting_for_awk(waiting_for_ack);
|
|
const non_echo_messages = echo.process_from_server(server_messages);
|
|
assert.deepEqual(non_echo_messages, server_messages);
|
|
});
|
|
|
|
run_test('process_from_server for differently rendered messages', () => {
|
|
// Test that we update all the booleans and the content of the message
|
|
// in local echo.
|
|
const old_value = 'old_value';
|
|
const new_value = 'new_value';
|
|
const waiting_for_ack = {
|
|
100.1: {
|
|
content: "<p>A client rendered message</p>",
|
|
timestamp: old_value,
|
|
is_me_message: old_value,
|
|
submessages: old_value,
|
|
subject_links: old_value,
|
|
},
|
|
};
|
|
const server_messages = [
|
|
{
|
|
local_id: 100.1,
|
|
content: "<p>A server rendered message</p>",
|
|
timestamp: new_value,
|
|
is_me_message: new_value,
|
|
submessages: new_value,
|
|
subject_links: new_value,
|
|
},
|
|
];
|
|
echo._patch_waiting_for_awk(waiting_for_ack);
|
|
messages_to_rerender = [];
|
|
disparities = [];
|
|
const non_echo_messages = echo.process_from_server(server_messages);
|
|
assert.deepEqual(non_echo_messages, []);
|
|
assert.equal(disparities.length, 1);
|
|
assert.deepEqual(messages_to_rerender, [{
|
|
content: server_messages[0].content,
|
|
timestamp: new_value,
|
|
is_me_message: new_value,
|
|
submessages: new_value,
|
|
subject_links: new_value,
|
|
}]);
|
|
});
|
|
|
|
run_test('build_display_recipient', () => {
|
|
page_params.user_id = 123;
|
|
page_params.realm_users = [
|
|
{
|
|
user_id: 123,
|
|
full_name: "Iago",
|
|
email: "iago@zulip.com",
|
|
},
|
|
{
|
|
email: "cordelia@zulip.com",
|
|
full_name: "Cordelia",
|
|
user_id: 21,
|
|
},
|
|
];
|
|
people.initialize();
|
|
|
|
let message = {
|
|
type: "stream",
|
|
stream: "general",
|
|
sender_email: "iago@zulip.com",
|
|
sender_full_name: "Iago",
|
|
sender_id: 123,
|
|
};
|
|
let display_recipient = echo.build_display_recipient(message);
|
|
assert.equal(display_recipient, "general");
|
|
|
|
message = {
|
|
type: "private",
|
|
private_message_recipient: "cordelia@zulip.com,hamlet@zulip.com",
|
|
sender_email: "iago@zulip.com",
|
|
sender_full_name: "Iago",
|
|
sender_id: 123,
|
|
};
|
|
display_recipient = echo.build_display_recipient(message);
|
|
assert.equal(display_recipient.length, 3);
|
|
|
|
let iago = display_recipient.find((recipient) => recipient.email === "iago@zulip.com");
|
|
assert.equal(iago.full_name, "Iago");
|
|
assert.equal(iago.id, 123);
|
|
|
|
const cordelia = display_recipient.find((recipient) => recipient.email === "cordelia@zulip.com");
|
|
assert.equal(cordelia.full_name, "Cordelia");
|
|
assert.equal(cordelia.id, 21);
|
|
|
|
const hamlet = display_recipient.find((recipient) => recipient.email === "hamlet@zulip.com");
|
|
assert.equal(hamlet.full_name, "hamlet@zulip.com");
|
|
assert.equal(hamlet.id, undefined);
|
|
assert.equal(hamlet.unknown_local_echo_user, true);
|
|
|
|
message = {
|
|
type: "private",
|
|
private_message_recipient: "iago@zulip.com",
|
|
sender_email: "iago@zulip.com",
|
|
sender_full_name: "Iago",
|
|
sender_id: 123,
|
|
};
|
|
display_recipient = echo.build_display_recipient(message);
|
|
|
|
assert.equal(display_recipient.length, 1);
|
|
iago = display_recipient.find((recipient) => recipient.email === "iago@zulip.com");
|
|
assert.equal(iago.full_name, "Iago");
|
|
assert.equal(iago.id, 123);
|
|
|
|
});
|
|
|
|
run_test('insert_local_message', () => {
|
|
const local_id = 1;
|
|
|
|
page_params.user_id = 123;
|
|
page_params.realm_users = [
|
|
{
|
|
user_id: 123,
|
|
full_name: "Iago",
|
|
email: "iago@zulip.com",
|
|
},
|
|
];
|
|
people.initialize();
|
|
|
|
let apply_markdown_called = false;
|
|
let add_topic_links_called = false;
|
|
let insert_message_called = false;
|
|
|
|
markdown.apply_markdown = () => {
|
|
apply_markdown_called = true;
|
|
};
|
|
|
|
markdown.add_topic_links = () => {
|
|
add_topic_links_called = true;
|
|
};
|
|
|
|
local_message.insert_message = (message) => {
|
|
assert.equal(message.display_recipient, "general");
|
|
assert.equal(message.timestamp, "timestamp");
|
|
assert.equal(message.sender_email, "iago@zulip.com");
|
|
assert.equal(message.sender_full_name, "Iago");
|
|
assert.equal(message.sender_id, 123);
|
|
insert_message_called = true;
|
|
};
|
|
|
|
let message_request = {
|
|
type: "stream",
|
|
stream: "general",
|
|
sender_email: "iago@zulip.com",
|
|
sender_full_name: "Iago",
|
|
sender_id: 123,
|
|
};
|
|
echo.insert_local_message(message_request, local_id);
|
|
|
|
assert(apply_markdown_called);
|
|
assert(add_topic_links_called);
|
|
assert(insert_message_called);
|
|
|
|
add_topic_links_called = false;
|
|
apply_markdown_called = false;
|
|
insert_message_called = false;
|
|
|
|
local_message.insert_message = (message) => {
|
|
assert.equal(message.display_recipient.length, 3);
|
|
insert_message_called = true;
|
|
};
|
|
|
|
message_request = {
|
|
private_message_recipient: "cordelia@zulip.com,hamlet@zulip.com",
|
|
type: "private",
|
|
sender_email: "iago@zulip.com",
|
|
sender_full_name: "Iago",
|
|
sender_id: 123,
|
|
};
|
|
echo.insert_local_message(message_request, local_id);
|
|
assert(add_topic_links_called);
|
|
assert(apply_markdown_called);
|
|
assert(insert_message_called);
|
|
|
|
});
|