mirror of
https://github.com/zulip/zulip.git
synced 2025-11-03 05:23:35 +00:00
We have shim code that makes our internal narrow operators support both a tuple interface and an object interface. We are removing the shim on staging to help expose any dark corners of the code that still rely on operators being represented as tuples. (imported from commit f9d101dbb7f49a4abec14806734b9c86bd93c4e1)
104 lines
2.9 KiB
JavaScript
104 lines
2.9 KiB
JavaScript
add_dependencies({
|
|
stream_data: 'js/stream_data.js',
|
|
Filter: 'js/filter.js'
|
|
});
|
|
|
|
var narrow = require('js/narrow.js');
|
|
var Filter = global.Filter;
|
|
var stream_data = global.stream_data;
|
|
|
|
set_global('feature_flags', {
|
|
remove_filter_tuples_safety_net: false
|
|
});
|
|
|
|
function set_filter(operators) {
|
|
narrow._set_current_filter(new Filter(operators));
|
|
}
|
|
|
|
(function test_stream() {
|
|
set_filter([['stream', 'Foo'], ['topic', 'Bar'], ['search', 'yo']]);
|
|
|
|
assert.equal(narrow.stream(), 'Foo');
|
|
}());
|
|
|
|
|
|
(function test_narrowed() {
|
|
narrow._set_current_filter(undefined); // not narrowed, basically
|
|
assert(!narrow.narrowed_to_pms());
|
|
assert(!narrow.narrowed_by_reply());
|
|
assert(!narrow.narrowed_to_search());
|
|
assert(!narrow.narrowed_to_topic());
|
|
|
|
set_filter([['stream', 'Foo']]);
|
|
assert(!narrow.narrowed_to_pms());
|
|
assert(!narrow.narrowed_by_reply());
|
|
assert(!narrow.narrowed_to_search());
|
|
assert(!narrow.narrowed_to_topic());
|
|
|
|
set_filter([['pm-with', 'steve@zulip.com']]);
|
|
assert(narrow.narrowed_to_pms());
|
|
assert(narrow.narrowed_by_reply());
|
|
assert(!narrow.narrowed_to_search());
|
|
assert(!narrow.narrowed_to_topic());
|
|
|
|
set_filter([['stream', 'Foo'], ['topic', 'bar']]);
|
|
assert(!narrow.narrowed_to_pms());
|
|
assert(narrow.narrowed_by_reply());
|
|
assert(!narrow.narrowed_to_search());
|
|
assert(narrow.narrowed_to_topic());
|
|
|
|
set_filter([['search', 'grail']]);
|
|
assert(!narrow.narrowed_to_pms());
|
|
assert(!narrow.narrowed_by_reply());
|
|
assert(narrow.narrowed_to_search());
|
|
assert(!narrow.narrowed_to_topic());
|
|
}());
|
|
|
|
(function test_operators() {
|
|
set_filter([['stream', 'Foo'], ['topic', 'Bar'], ['search', 'Yo']]);
|
|
var result = narrow.operators();
|
|
assert.equal(result.length, 3);
|
|
assert.equal(result[0].operator, 'stream');
|
|
assert.equal(result[0].operand, 'Foo');
|
|
|
|
assert.equal(result[1].operator, 'topic');
|
|
assert.equal(result[1].operand, 'Bar');
|
|
|
|
assert.equal(result[2].operator, 'search');
|
|
assert.equal(result[2].operand, 'yo');
|
|
}());
|
|
|
|
(function test_muting_enabled() {
|
|
set_filter([['stream', 'devel']]);
|
|
assert(narrow.muting_enabled());
|
|
|
|
narrow._set_current_filter(undefined); // not narrowed, basically
|
|
assert(narrow.muting_enabled());
|
|
|
|
set_filter([['stream', 'devel'], ['topic', 'mac']]);
|
|
assert(!narrow.muting_enabled());
|
|
|
|
set_filter([['search', 'whatever']]);
|
|
assert(!narrow.muting_enabled());
|
|
|
|
set_filter([['is', 'private']]);
|
|
assert(!narrow.muting_enabled());
|
|
|
|
}());
|
|
|
|
(function test_set_compose_defaults() {
|
|
set_filter([['stream', 'Foo'], ['topic', 'Bar']]);
|
|
|
|
var opts = {};
|
|
narrow.set_compose_defaults(opts);
|
|
assert.equal(opts.stream, 'Foo');
|
|
assert.equal(opts.subject, 'Bar');
|
|
|
|
stream_data.add_sub('ROME', {name: 'ROME', stream_id: 99});
|
|
set_filter([['stream', 'rome']]);
|
|
|
|
opts = {};
|
|
narrow.set_compose_defaults(opts);
|
|
assert.equal(opts.stream, 'ROME');
|
|
}());
|