Files
zulip/frontend_tests/node_tests/stream_sort.js
sahil839 dcc24992b9 streams: Store list of stream ids instead of names for sorting.
We will store list of stream ids to sort streams instead of names.
We have added a compare_function for sorting the list of stream_ids
by comparing stream names.

This change helps us to remove a couple of get_sub calls and using
stream ids instead of name also helps in avoiding bugs caused due
to live update on renaming of stream.
2020-07-28 17:01:17 -07:00

97 lines
3.0 KiB
JavaScript

zrequire("stream_data");
zrequire("stream_sort");
run_test("no_subscribed_streams", () => {
assert.equal(stream_sort.sort_groups([]), undefined);
assert.equal(stream_sort.first_stream_id(), undefined);
});
const scalene = {
subscribed: true,
name: "scalene",
stream_id: 1,
pin_to_top: true,
};
const fast_tortoise = {
subscribed: true,
name: "fast tortoise",
stream_id: 2,
pin_to_top: false,
};
const pneumonia = {
subscribed: true,
name: "pneumonia",
stream_id: 3,
pin_to_top: false,
};
const clarinet = {
subscribed: true,
name: "clarinet",
stream_id: 4,
pin_to_top: false,
};
const weaving = {
subscribed: false,
name: "weaving",
stream_id: 5,
pin_to_top: false,
};
stream_data.add_sub(scalene);
stream_data.add_sub(fast_tortoise);
stream_data.add_sub(pneumonia);
stream_data.add_sub(clarinet);
stream_data.add_sub(weaving);
function sort_groups(query) {
const streams = stream_data.subscribed_stream_ids();
return stream_sort.sort_groups(streams, query);
}
run_test("basics", (override) => {
override("stream_data.is_active", (sub) => sub.name !== "pneumonia");
// Test sorting into categories/alphabetized
let sorted = sort_groups("");
assert.deepEqual(sorted.pinned_streams, [scalene.stream_id]);
assert.deepEqual(sorted.normal_streams, [clarinet.stream_id, fast_tortoise.stream_id]);
assert.deepEqual(sorted.dormant_streams, [pneumonia.stream_id]);
// Test cursor helpers.
assert.equal(stream_sort.first_stream_id(), scalene.stream_id);
assert.equal(stream_sort.prev_stream_id(scalene.stream_id), undefined);
assert.equal(stream_sort.prev_stream_id(clarinet.stream_id), scalene.stream_id);
assert.equal(stream_sort.next_stream_id(fast_tortoise.stream_id), pneumonia.stream_id);
assert.equal(stream_sort.next_stream_id(pneumonia.stream_id), undefined);
// Test filtering
sorted = sort_groups("s");
assert.deepEqual(sorted.pinned_streams, [scalene.stream_id]);
assert.deepEqual(sorted.normal_streams, []);
assert.deepEqual(sorted.dormant_streams, []);
assert.equal(stream_sort.prev_stream_id(clarinet.stream_id), undefined);
assert.equal(stream_sort.next_stream_id(clarinet.stream_id), undefined);
// Test searching entire word, case-insensitive
sorted = sort_groups("PnEuMoNiA");
assert.deepEqual(sorted.pinned_streams, []);
assert.deepEqual(sorted.normal_streams, []);
assert.deepEqual(sorted.dormant_streams, [pneumonia.stream_id]);
// Test searching part of word
sorted = sort_groups("tortoise");
assert.deepEqual(sorted.pinned_streams, []);
assert.deepEqual(sorted.normal_streams, [fast_tortoise.stream_id]);
assert.deepEqual(sorted.dormant_streams, []);
// Test searching stream with spaces
sorted = sort_groups("fast t");
assert.deepEqual(sorted.pinned_streams, []);
assert.deepEqual(sorted.normal_streams, [fast_tortoise.stream_id]);
assert.deepEqual(sorted.dormant_streams, []);
});