mirror of
https://github.com/zulip/zulip.git
synced 2025-11-03 05:23:35 +00:00
local echo: Bypass message.flags array.
We no longer set message.flags in the local echo path. In the markdown parsing step, we just set message.mentioned directly. And then we change `insert_new_messages` to no longer convert flags to booleans, and move that code to only happen for incoming server message events.
This commit is contained in:
@@ -12,6 +12,7 @@ zrequire('people');
|
||||
zrequire('user_groups');
|
||||
zrequire('emoji_codes', 'generated/emoji/emoji_codes');
|
||||
zrequire('emoji');
|
||||
zrequire('message_store');
|
||||
zrequire('markdown');
|
||||
|
||||
set_global('window', {
|
||||
@@ -193,15 +194,18 @@ var bugdown_data = JSON.parse(fs.readFileSync(path.join(__dirname, '../../zerver
|
||||
(function test_message_flags() {
|
||||
var message = {raw_content: '@**Leo**'};
|
||||
markdown.apply_markdown(message);
|
||||
assert(!_.contains(message.flags, 'mentioned'));
|
||||
assert(!message.mentioned);
|
||||
assert(!message.mentioned_me_directly);
|
||||
|
||||
message = {raw_content: '@**Cordelia Lear**'};
|
||||
markdown.apply_markdown(message);
|
||||
assert(_.contains(message.flags, 'mentioned'));
|
||||
assert(message.mentioned);
|
||||
assert(message.mentioned_me_directly);
|
||||
|
||||
message = {raw_content: '@**all**'};
|
||||
markdown.apply_markdown(message);
|
||||
assert(_.contains(message.flags, 'mentioned'));
|
||||
assert(message.mentioned);
|
||||
assert(!message.mentioned_me_directly);
|
||||
}());
|
||||
|
||||
(function test_marked() {
|
||||
@@ -342,44 +346,38 @@ var bugdown_data = JSON.parse(fs.readFileSync(path.join(__dirname, '../../zerver
|
||||
(function test_message_flags() {
|
||||
var input = "/me is testing this";
|
||||
var message = {subject: "No links here", raw_content: input};
|
||||
message.flags = ['read'];
|
||||
markdown.apply_markdown(message);
|
||||
|
||||
assert.equal(message.is_me_message, true);
|
||||
assert.equal(message.flags.length, 1);
|
||||
assert(message.flags.indexOf('read') !== -1);
|
||||
assert(!message.unread);
|
||||
|
||||
input = "testing this @**all** @**Cordelia Lear**";
|
||||
message = {subject: "No links here", raw_content: input};
|
||||
markdown.apply_markdown(message);
|
||||
|
||||
assert.equal(message.is_me_message, false);
|
||||
assert.equal(message.flags.length, 1);
|
||||
assert(message.flags.indexOf('mentioned') !== -1);
|
||||
assert.equal(message.mentioned, true);
|
||||
assert.equal(message.mentioned_me_directly, true);
|
||||
|
||||
input = "test @all";
|
||||
message = {subject: "No links here", raw_content: input};
|
||||
markdown.apply_markdown(message);
|
||||
assert.equal(message.flags.length, 1);
|
||||
assert(message.flags.indexOf('mentioned') !== -1);
|
||||
assert.equal(message.mentioned, true);
|
||||
|
||||
input = "test @any";
|
||||
message = {subject: "No links here", raw_content: input};
|
||||
markdown.apply_markdown(message);
|
||||
assert.equal(message.flags.length, 0);
|
||||
assert(message.flags.indexOf('mentioned') === -1);
|
||||
assert.equal(message.mentioned, false);
|
||||
|
||||
input = "test @*hamletcharacters*";
|
||||
message = {subject: "No links here", raw_content: input};
|
||||
markdown.apply_markdown(message);
|
||||
assert.equal(message.flags.length, 1);
|
||||
assert(message.flags.indexOf('mentioned') !== -1);
|
||||
assert.equal(message.mentioned, true);
|
||||
|
||||
input = "test @*backend*";
|
||||
message = {subject: "No links here", raw_content: input};
|
||||
markdown.apply_markdown(message);
|
||||
assert.equal(message.flags.length, 0);
|
||||
assert(message.flags.indexOf('mentioned') === -1);
|
||||
assert.equal(message.mentioned, false);
|
||||
}());
|
||||
|
||||
(function test_backend_only_realm_filters() {
|
||||
|
||||
@@ -183,6 +183,38 @@ global.people.initialize_current_user(me.user_id);
|
||||
assert.equal(num_partner, 0);
|
||||
}());
|
||||
|
||||
(function test_update_booleans() {
|
||||
var message = {};
|
||||
|
||||
// First, test fields that we do actually want to update.
|
||||
message.mentioned = false;
|
||||
message.mentioned_me_directly = false;
|
||||
message.alerted = false;
|
||||
|
||||
var flags = ['mentioned', 'has_alert_word', 'read'];
|
||||
message_store.update_booleans(message, flags);
|
||||
assert.equal(message.mentioned, true);
|
||||
assert.equal(message.mentioned_me_directly, true);
|
||||
assert.equal(message.alerted, true);
|
||||
|
||||
flags = ['read'];
|
||||
message_store.update_booleans(message, flags);
|
||||
assert.equal(message.mentioned, false);
|
||||
assert.equal(message.mentioned_me_directly, false);
|
||||
assert.equal(message.alerted, false);
|
||||
|
||||
// Make sure we don't muck with unread.
|
||||
message.unread = false;
|
||||
flags = [''];
|
||||
message_store.update_booleans(message, flags);
|
||||
assert.equal(message.unread, false);
|
||||
|
||||
message.unread = true;
|
||||
flags = ['read'];
|
||||
message_store.update_booleans(message, flags);
|
||||
assert.equal(message.unread, true);
|
||||
}());
|
||||
|
||||
(function test_message_id_change() {
|
||||
var message = {
|
||||
sender_email: 'me@example.com',
|
||||
|
||||
@@ -6,6 +6,7 @@ set_global('window', {
|
||||
});
|
||||
global.stub_out_jquery();
|
||||
|
||||
zrequire('message_store');
|
||||
zrequire('server_events_dispatch');
|
||||
zrequire('server_events');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user