mirror of
https://github.com/zulip/zulip.git
synced 2026-07-12 21:04:41 +08:00
When new PMs came in, we would do a little animation to show you the incoming message. Unfortunately, it was broken and would animate too many things. (The code looks at a single var to see if PM counts changed, but there are actually mulitple PM counts. We could fix that, but we decided that this feature just isn't worth the complexity.) We still animate incoming mentions. Fixes #11868.
294 lines
8.3 KiB
JavaScript
294 lines
8.3 KiB
JavaScript
set_global('$', global.make_zjquery());
|
|
|
|
set_global('narrow_state', {});
|
|
set_global('resize', {
|
|
resize_stream_filters_container: function () {},
|
|
});
|
|
set_global('ui', {
|
|
set_up_scrollbar: function () {},
|
|
});
|
|
set_global('stream_popover', {
|
|
hide_topic_popover: function () {},
|
|
});
|
|
set_global('unread', {});
|
|
set_global('unread_ui', {});
|
|
set_global('blueslip', global.make_zblueslip());
|
|
set_global('popovers', {
|
|
hide_all: function () {},
|
|
});
|
|
|
|
zrequire('user_status');
|
|
zrequire('presence');
|
|
zrequire('buddy_data');
|
|
zrequire('hash_util');
|
|
zrequire('Handlebars', 'handlebars');
|
|
zrequire('templates');
|
|
zrequire('people');
|
|
zrequire('pm_conversations');
|
|
zrequire('pm_list');
|
|
|
|
var alice = {
|
|
email: '[email protected]',
|
|
user_id: 101,
|
|
full_name: 'Alice',
|
|
};
|
|
var bob = {
|
|
email: '[email protected]',
|
|
user_id: 102,
|
|
full_name: 'Bob',
|
|
};
|
|
var me = {
|
|
email: '[email protected]',
|
|
user_id: 103,
|
|
full_name: 'Me Myself',
|
|
};
|
|
global.people.add_in_realm(alice);
|
|
global.people.add_in_realm(bob);
|
|
global.people.add_in_realm(me);
|
|
global.people.initialize_current_user(me.user_id);
|
|
|
|
run_test('get_conversation_li', () => {
|
|
var test_conversation = '[email protected],[email protected]'; // people.js
|
|
pm_list.get_conversation_li(test_conversation);
|
|
});
|
|
|
|
run_test('close', () => {
|
|
var collapsed;
|
|
$('#private-container').remove = function () {
|
|
collapsed = true;
|
|
};
|
|
pm_list.close();
|
|
assert(collapsed);
|
|
});
|
|
|
|
run_test('build_private_messages_list', () => {
|
|
var active_conversation_1 = "[email protected],[email protected]";
|
|
var active_conversation_2 = '[email protected],[email protected]';
|
|
var max_conversations = 5;
|
|
|
|
var user_ids_string = '101,102';
|
|
var timestamp = 0;
|
|
pm_conversations.recent.insert(user_ids_string, timestamp);
|
|
|
|
global.unread.num_unread_for_person = function () {
|
|
return 1;
|
|
};
|
|
|
|
var template_data;
|
|
|
|
global.templates.render = function (template_name, data) {
|
|
assert.equal(template_name, 'sidebar_private_message_list');
|
|
template_data = data;
|
|
};
|
|
|
|
pm_list._build_private_messages_list(active_conversation_1, max_conversations);
|
|
|
|
var expected_data = {
|
|
messages: [
|
|
{
|
|
recipients: 'Alice, Bob',
|
|
user_ids_string: '101,102',
|
|
unread: 1,
|
|
is_zero: false,
|
|
zoom_out_hide: false,
|
|
url: '#narrow/pm-with/101,102-group',
|
|
user_circle_class: 'user_circle_fraction',
|
|
fraction_present: false,
|
|
is_group: true,
|
|
},
|
|
],
|
|
zoom_class: 'zoomed-out',
|
|
want_show_more_messages_links: false,
|
|
};
|
|
|
|
assert.deepEqual(template_data, expected_data);
|
|
|
|
max_conversations = 0;
|
|
global.unread.num_unread_for_person = function () {
|
|
return 0;
|
|
};
|
|
pm_list._build_private_messages_list(active_conversation_2, max_conversations);
|
|
expected_data.messages[0].unread = 0;
|
|
expected_data.messages[0].is_zero = true;
|
|
expected_data.messages[0].zoom_out_hide = true;
|
|
expected_data.want_show_more_messages_links = true;
|
|
assert.deepEqual(template_data, expected_data);
|
|
|
|
$('.top_left_private_messages').on = function (action, selector, f) {
|
|
var e = { preventDefault: function () {}, stopPropagation: function () {}};
|
|
f(e);
|
|
};
|
|
pm_list.initialize();
|
|
expected_data.zoom_class = "zoomed-in";
|
|
expected_data.want_show_more_messages_links = false;
|
|
pm_list._build_private_messages_list(active_conversation_2, max_conversations);
|
|
assert.deepEqual(template_data, expected_data);
|
|
});
|
|
|
|
run_test('expand_and_update_private_messages', () => {
|
|
var collapsed;
|
|
$('#private-container').remove = function () {
|
|
collapsed = true;
|
|
};
|
|
|
|
global.templates.render = function (template_name) {
|
|
assert.equal(template_name, 'sidebar_private_message_list');
|
|
return 'fake-dom-for-pm-list';
|
|
};
|
|
|
|
var private_li = $(".top_left_private_messages");
|
|
var alice_li = $.create('alice-li-stub');
|
|
var bob_li = $.create('bob-li-stub');
|
|
|
|
private_li.set_find_results("li[data-user-ids-string='101']", alice_li);
|
|
private_li.set_find_results("li[data-user-ids-string='102']", bob_li);
|
|
|
|
var dom;
|
|
private_li.append = function (html) {
|
|
dom = html;
|
|
};
|
|
|
|
pm_list.expand([alice.email, bob.email]);
|
|
assert.equal(dom, 'fake-dom-for-pm-list');
|
|
assert(collapsed);
|
|
assert(!alice_li.hasClass('active-sub-filter'));
|
|
|
|
pm_list.expand([alice.email]);
|
|
assert.equal(dom, 'fake-dom-for-pm-list');
|
|
assert(collapsed);
|
|
assert(alice_li.hasClass('active-sub-filter'));
|
|
|
|
pm_list.expand([]);
|
|
assert.equal(dom, 'fake-dom-for-pm-list');
|
|
assert(collapsed);
|
|
|
|
// Next, simulate clicking on Bob.
|
|
narrow_state.active = function () { return true; };
|
|
|
|
narrow_state.filter = function () {
|
|
return {
|
|
operands: function (operand) {
|
|
if (operand === 'is') {
|
|
return 'private';
|
|
}
|
|
assert.equal(operand, 'pm-with');
|
|
return [bob.email, alice.email];
|
|
},
|
|
};
|
|
};
|
|
|
|
collapsed = false;
|
|
|
|
pm_list.update_private_messages();
|
|
|
|
assert(collapsed);
|
|
assert(!bob_li.hasClass('active-sub-filter'));
|
|
|
|
narrow_state.filter = function () {
|
|
return {
|
|
operands: function (operand) {
|
|
if (operand === 'is') {
|
|
return ['private'];
|
|
}
|
|
assert.equal(operand, 'pm-with');
|
|
return [];
|
|
},
|
|
};
|
|
};
|
|
|
|
collapsed = false;
|
|
|
|
pm_list.update_private_messages();
|
|
|
|
assert(collapsed);
|
|
assert(!bob_li.hasClass('active-sub-filter'));
|
|
|
|
narrow_state.filter = function () {
|
|
return {
|
|
operands: function (operand) {
|
|
if (operand === 'is') {
|
|
return ['private'];
|
|
}
|
|
assert.equal(operand, 'pm-with');
|
|
return [bob.email];
|
|
},
|
|
};
|
|
};
|
|
|
|
collapsed = false;
|
|
|
|
pm_list.update_private_messages();
|
|
|
|
assert(collapsed);
|
|
assert(bob_li.hasClass('active-sub-filter'));
|
|
|
|
narrow_state.active = function () { return false; };
|
|
pm_list.update_private_messages();
|
|
|
|
});
|
|
|
|
run_test('update_dom_with_unread_counts', () => {
|
|
var total_value = $.create('total-value-stub');
|
|
var total_count = $.create('total-count-stub');
|
|
var private_li = $(".top_left_private_messages");
|
|
private_li.set_find_results('.count', total_count);
|
|
total_count.set_find_results('.value', total_value);
|
|
|
|
var child_value = $.create('child-value-stub');
|
|
var child_count = $.create('child-count-stub');
|
|
var child_li = $.create('child-li-stub');
|
|
private_li.set_find_results("li[data-user-ids-string='101,102']", child_li);
|
|
child_li.set_find_results('.private_message_count', child_count);
|
|
child_count.set_find_results('.value', child_value);
|
|
|
|
var pm_count = new Dict();
|
|
var user_ids_string = '101,102';
|
|
pm_count.set(user_ids_string, 7);
|
|
|
|
var counts = {
|
|
private_message_count: 10,
|
|
pm_count: pm_count,
|
|
};
|
|
|
|
var toggle_button_set;
|
|
unread_ui.set_count_toggle_button = function (elt, count) {
|
|
toggle_button_set = true;
|
|
assert.equal(count, 10);
|
|
};
|
|
|
|
pm_list.update_dom_with_unread_counts(counts);
|
|
|
|
assert(toggle_button_set);
|
|
assert.equal(child_value.text(), '7');
|
|
assert.equal(total_value.text(), '10');
|
|
|
|
pm_count.set(user_ids_string, 0);
|
|
counts = {
|
|
private_message_count: 0,
|
|
pm_count: pm_count,
|
|
};
|
|
toggle_button_set = false;
|
|
unread_ui.set_count_toggle_button = function (elt, count) {
|
|
toggle_button_set = true;
|
|
assert.equal(count, 0);
|
|
};
|
|
pm_list.update_dom_with_unread_counts(counts);
|
|
|
|
assert(toggle_button_set);
|
|
assert.equal(child_value.text(), '');
|
|
assert.equal(total_value.text(), '');
|
|
|
|
var pm_li = pm_list.get_conversation_li("[email protected],[email protected]");
|
|
pm_li.find = function (sel) {
|
|
assert.equal(sel, '.private_message_count');
|
|
return {find: function (sel) {
|
|
assert.equal(sel, '.value');
|
|
return [];
|
|
}};
|
|
};
|
|
pm_list.update_dom_with_unread_counts(counts);
|
|
assert(toggle_button_set);
|
|
assert.equal(child_value.text(), '');
|
|
assert.equal(total_value.text(), '');
|
|
});
|