set_global('i18n', global.stub_i18n); 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, []); });