mirror of
https://github.com/zulip/zulip.git
synced 2025-11-02 21:13:36 +00:00
tests: Add coverage for topic_list.get_list_info().
This commit is contained in:
@@ -18,18 +18,138 @@ const devel = {
|
||||
name: 'devel',
|
||||
};
|
||||
|
||||
const general = {
|
||||
stream_id: 556,
|
||||
name: 'general',
|
||||
};
|
||||
|
||||
stream_data.add_sub('devel', devel);
|
||||
stream_data.add_sub('general', general);
|
||||
|
||||
run_test('topic_list_build_widget', () => {
|
||||
|
||||
function clear() {
|
||||
narrow_state.topic = () => undefined;
|
||||
topic_data.reset();
|
||||
topic_data.add_message({
|
||||
stream_id: devel.stream_id,
|
||||
topic_name: 'coding',
|
||||
message_id: 400,
|
||||
stream_popover.hide_topic_popover = function () {};
|
||||
muting.is_topic_muted = () => false;
|
||||
}
|
||||
|
||||
function get_list_info() {
|
||||
const stream_id = general.stream_id;
|
||||
const widget = topic_list.widget(undefined, stream_id);
|
||||
return widget.get_list_info();
|
||||
}
|
||||
|
||||
run_test('get_list_info w/real topic_data', () => {
|
||||
clear();
|
||||
|
||||
const empty_list_info = get_list_info();
|
||||
|
||||
assert.deepEqual(empty_list_info, {
|
||||
items: [],
|
||||
more_topics_unreads: 0,
|
||||
num_possible_topics: 0,
|
||||
});
|
||||
|
||||
stream_popover.hide_topic_popover = function () {};
|
||||
_.each(_.range(7), (i) => {
|
||||
const topic_name = 'topic ' + i;
|
||||
topic_data.add_message({
|
||||
stream_id: general.stream_id,
|
||||
topic_name: topic_name,
|
||||
message_id: 1000 + i,
|
||||
});
|
||||
});
|
||||
|
||||
const list_info = get_list_info();
|
||||
assert.equal(list_info.items.length, 5);
|
||||
assert.equal(list_info.more_topics_unreads, 0);
|
||||
assert.equal(list_info.num_possible_topics, 7);
|
||||
|
||||
assert.deepEqual(list_info.items[0], {
|
||||
is_active_topic: false,
|
||||
is_muted: false,
|
||||
is_zero: true,
|
||||
topic_name: 'topic 6',
|
||||
unread: 0,
|
||||
url: '#narrow/stream/556-general/topic/topic.206',
|
||||
});
|
||||
});
|
||||
|
||||
run_test('get_list_info unreads', () => {
|
||||
clear();
|
||||
|
||||
let list_info;
|
||||
|
||||
// Going forward, we just stub get_recent_names
|
||||
// for simpler test setup.
|
||||
topic_data.get_recent_names = () => {
|
||||
return _.map(_.range(15), (i) => {
|
||||
return 'topic ' + i;
|
||||
});
|
||||
};
|
||||
|
||||
const unread_cnt = {};
|
||||
unread.num_unread_for_topic = (stream_id, topic_name) => {
|
||||
assert.equal(stream_id, general.stream_id);
|
||||
return unread_cnt[topic_name] || 0;
|
||||
};
|
||||
|
||||
/*
|
||||
We have 15 topics, but we only show up
|
||||
to 8 topics, depending on how many have
|
||||
unread counts. We only show a max of 5
|
||||
fully-read topics.
|
||||
|
||||
So first we'll get 7 topics, where 2 are
|
||||
unread.
|
||||
*/
|
||||
unread_cnt['topic 8'] = 8;
|
||||
unread_cnt['topic 9'] = 9;
|
||||
|
||||
list_info = get_list_info();
|
||||
assert.equal(list_info.items.length, 7);
|
||||
assert.equal(list_info.more_topics_unreads, 0);
|
||||
assert.equal(list_info.num_possible_topics, 15);
|
||||
|
||||
assert.deepEqual(
|
||||
_.map(list_info.items, (li) => li.topic_name),
|
||||
[
|
||||
'topic 0',
|
||||
'topic 1',
|
||||
'topic 2',
|
||||
'topic 3',
|
||||
'topic 4',
|
||||
'topic 8',
|
||||
'topic 9',
|
||||
]);
|
||||
|
||||
unread_cnt['topic 6'] = 6;
|
||||
unread_cnt['topic 7'] = 7;
|
||||
|
||||
list_info = get_list_info();
|
||||
assert.equal(list_info.items.length, 8);
|
||||
assert.equal(list_info.more_topics_unreads, 9);
|
||||
assert.equal(list_info.num_possible_topics, 15);
|
||||
|
||||
assert.deepEqual(
|
||||
_.map(list_info.items, (li) => li.topic_name),
|
||||
[
|
||||
'topic 0',
|
||||
'topic 1',
|
||||
'topic 2',
|
||||
'topic 3',
|
||||
'topic 4',
|
||||
'topic 6',
|
||||
'topic 7',
|
||||
'topic 8',
|
||||
]);
|
||||
});
|
||||
|
||||
run_test('topic_list_build_widget', () => {
|
||||
clear();
|
||||
|
||||
topic_data.get_recent_names = () => {
|
||||
return ['coding'];
|
||||
};
|
||||
|
||||
narrow_state.topic = function () {
|
||||
return 'testing';
|
||||
|
||||
Reference in New Issue
Block a user