Files
zulip/frontend_tests/node_tests/narrow.js
Steve Howell 8c49985058 url decoding: Handle your own id being in PM slugs.
Internally we generally omit our own id and email
in data structures related to PMs, except when we
are the sender, but if we receive "perma links"
we will need to filter out our id.
2018-10-22 12:22:26 -07:00

180 lines
5.2 KiB
JavaScript

zrequire('hash_util');
zrequire('hashchange');
zrequire('narrow_state');
zrequire('people');
zrequire('stream_data');
zrequire('Filter', 'js/filter');
set_global('i18n', global.stub_i18n);
zrequire('narrow');
function set_filter(operators) {
operators = _.map(operators, function (op) {
return {operator: op[0], operand: op[1]};
});
narrow_state.set_current_filter(new Filter(operators));
}
var me = {
email: 'me@example.com',
user_id: 5,
full_name: 'Me Myself',
};
var alice = {
email: 'alice@example.com',
user_id: 23,
full_name: 'Alice Smith',
};
var ray = {
email: 'ray@example.com',
user_id: 22,
full_name: 'Raymond',
};
run_test('stream_topic', () => {
set_filter([['stream', 'Foo'], ['topic', 'Bar'], ['search', 'Yo']]);
set_global('current_msg_list', {
});
global.current_msg_list.selected_message = function () {};
var stream_topic = narrow.stream_topic();
assert.deepEqual(stream_topic, {
stream: 'Foo',
topic: 'Bar',
});
global.current_msg_list.selected_message = function () {
return {
stream: 'Stream1',
subject: 'Topic1',
};
};
stream_topic = narrow.stream_topic();
assert.deepEqual(stream_topic, {
stream: 'Stream1',
topic: 'Topic1',
});
});
run_test('uris', () => {
people.add(ray);
people.add(alice);
people.add(me);
people.initialize_current_user(me.user_id);
var uri = hash_util.pm_with_uri(ray.email);
assert.equal(uri, '#narrow/pm-with/22-ray');
uri = hash_util.huddle_with_uri("22,23");
assert.equal(uri, '#narrow/pm-with/22,23-group');
uri = hash_util.by_sender_uri(ray.email);
assert.equal(uri, '#narrow/sender/22-ray');
var emails = global.hash_util.decode_operand('pm-with', '22,23-group');
assert.equal(emails, 'alice@example.com,ray@example.com');
emails = global.hash_util.decode_operand('pm-with', '5,22,23-group');
assert.equal(emails, 'alice@example.com,ray@example.com');
emails = global.hash_util.decode_operand('pm-with', '5-group');
assert.equal(emails, 'me@example.com');
});
run_test('show_empty_narrow_message', () => {
var hide_id;
var show_id;
var attr_id;
set_global('$', (id) => {
return {
hide: () => {hide_id = id;},
show: () => {show_id = id;},
attr: () => {attr_id = id;},
};
});
narrow_state.reset_current_filter();
narrow.show_empty_narrow_message();
assert.equal(hide_id,'.empty_feed_notice');
assert.equal(show_id, '#empty_narrow_message');
assert.equal(attr_id, '#left_bar_compose_reply_button_big');
// for non-existent or private stream
set_filter([['stream', 'Foo']]);
narrow.show_empty_narrow_message();
assert.equal(hide_id,'.empty_feed_notice');
assert.equal(show_id, '#nonsubbed_private_nonexistent_stream_narrow_message');
// for non sub public stream
stream_data.add_sub('ROME', {name: 'ROME', stream_id: 99});
set_filter([['stream', 'Rome']]);
narrow.show_empty_narrow_message();
assert.equal(hide_id,'.empty_feed_notice');
assert.equal(show_id, '#nonsubbed_stream_narrow_message');
set_filter([['is', 'starred']]);
narrow.show_empty_narrow_message();
assert.equal(hide_id,'.empty_feed_notice');
assert.equal(show_id, '#empty_star_narrow_message');
set_filter([['is', 'mentioned']]);
narrow.show_empty_narrow_message();
assert.equal(hide_id,'.empty_feed_notice');
assert.equal(show_id, '#empty_narrow_all_mentioned');
set_filter([['is', 'private']]);
narrow.show_empty_narrow_message();
assert.equal(hide_id,'.empty_feed_notice');
assert.equal(show_id, '#empty_narrow_all_private_message');
set_filter([['is', 'unread']]);
narrow.show_empty_narrow_message();
assert.equal(hide_id,'.empty_feed_notice');
assert.equal(show_id, '#no_unread_narrow_message');
set_filter([['pm-with', ['Yo']]]);
narrow.show_empty_narrow_message();
assert.equal(hide_id,'.empty_feed_notice');
assert.equal(show_id, '#non_existing_user');
people.add_in_realm(alice);
set_filter([['pm-with', ['alice@example.com', 'Yo']]]);
narrow.show_empty_narrow_message();
assert.equal(hide_id,'.empty_feed_notice');
assert.equal(show_id, '#non_existing_users');
set_filter([['pm-with', 'alice@example.com']]);
narrow.show_empty_narrow_message();
assert.equal(hide_id,'.empty_feed_notice');
assert.equal(show_id, '#empty_narrow_private_message');
set_filter([['group-pm-with', 'alice@example.com']]);
narrow.show_empty_narrow_message();
assert.equal(hide_id,'.empty_feed_notice');
assert.equal(show_id, '#empty_narrow_group_private_message');
set_filter([['sender', 'ray@example.com']]);
narrow.show_empty_narrow_message();
assert.equal(hide_id,'.empty_feed_notice');
assert.equal(show_id, '#silent_user');
set_filter([['sender', 'sinwar@example.com']]);
narrow.show_empty_narrow_message();
assert.equal(hide_id,'.empty_feed_notice');
assert.equal(show_id, '#non_existing_user');
set_filter([['search', 'grail']]);
narrow.show_empty_narrow_message();
assert.equal(hide_id,'.empty_feed_notice');
assert.equal(show_id, '#empty_search_narrow_message');
});