Files
zulip/frontend_tests/node_tests/stream_sort.js
Steve Howell b994889315 node tests: Just set i18n every time.
Explicitly stubbing i18n in 48 different files
is mostly busy work at this point, and it doesn't
provide much signal, since often it's invoked
only to satisfy transitive dependencies.
2020-02-28 17:11:24 -08:00

101 lines
3.0 KiB
JavaScript

zrequire('stream_data');
zrequire('stream_sort');
const with_overrides = global.with_overrides;
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_streams();
return stream_sort.sort_groups(streams, query);
}
with_overrides(function (override) {
override('stream_data.is_active', function (sub) {
return sub.name !== "pneumonia";
});
// Test sorting into categories/alphabetized
let sorted = sort_groups("");
assert.deepEqual(sorted.pinned_streams, ['scalene']);
assert.deepEqual(sorted.normal_streams, ['clarinet', 'fast tortoise']);
assert.deepEqual(sorted.dormant_streams, ['pneumonia']);
// 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']);
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']);
// Test searching part of word
sorted = sort_groups("tortoise");
assert.deepEqual(sorted.pinned_streams, []);
assert.deepEqual(sorted.normal_streams, ['fast tortoise']);
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']);
assert.deepEqual(sorted.dormant_streams, []);
});