mirror of https://github.com/zulip/zulip.git
171 lines
3.7 KiB
JavaScript
171 lines
3.7 KiB
JavaScript
|
// Unit test the search.js module.
|
||
|
//
|
||
|
// These tests are framework-free and run sequentially; they are invoked
|
||
|
// immediately after being defined. The contract here is that tests should
|
||
|
// clean up after themselves, and they should explicitly stub all
|
||
|
// dependencies.
|
||
|
|
||
|
var assert = require('assert');
|
||
|
|
||
|
function set_up_dependencies() {
|
||
|
var _ = global._ = require('../../../../static/third/underscore/underscore.js');
|
||
|
global.Handlebars = require('handlebars');
|
||
|
|
||
|
// We stub out most of jQuery, which is irrelevant to most of these tests.
|
||
|
var $ = function () {};
|
||
|
global.$ = $;
|
||
|
$.each = function (it, cb) {
|
||
|
var cb2 = function (a, b) { return cb(b,a); };
|
||
|
return _.each(it, cb2);
|
||
|
};
|
||
|
$.map = _.map;
|
||
|
$.grep = _.filter;
|
||
|
|
||
|
var actual_narrow = require('../../../../static/js/narrow.js');
|
||
|
var search = require('../../../../static/js/search.js');
|
||
|
|
||
|
global.narrow = {
|
||
|
parse: actual_narrow.parse,
|
||
|
unparse: actual_narrow.unparse,
|
||
|
canonicalize_operator: actual_narrow.canonicalize_operator,
|
||
|
Filter: actual_narrow.Filter
|
||
|
};
|
||
|
|
||
|
global.page_params = {
|
||
|
email: 'bob@zulip.com'
|
||
|
};
|
||
|
|
||
|
global.subs = {
|
||
|
canonicalized_name: function (name) { return name; }
|
||
|
};
|
||
|
|
||
|
global.typeahead_helper = require('../../../../static/js/typeahead_helper.js');
|
||
|
|
||
|
global.recent_subjects = {};
|
||
|
|
||
|
return search;
|
||
|
}
|
||
|
|
||
|
var search = set_up_dependencies();
|
||
|
|
||
|
(function test_basic_get_suggestions() {
|
||
|
var query = 'fred';
|
||
|
|
||
|
global.subs.subscribed_streams = function () {
|
||
|
return [];
|
||
|
};
|
||
|
|
||
|
global.narrow.stream = function () {
|
||
|
return 'office';
|
||
|
};
|
||
|
|
||
|
var suggestions = search.get_suggestions(query);
|
||
|
|
||
|
var expected = [
|
||
|
'fred',
|
||
|
''
|
||
|
];
|
||
|
assert.deepEqual(suggestions, expected);
|
||
|
}());
|
||
|
|
||
|
(function test_empty_query_suggestions() {
|
||
|
var query = '';
|
||
|
|
||
|
global.subs.subscribed_streams = function () {
|
||
|
return ['devel', 'office'];
|
||
|
};
|
||
|
|
||
|
global.narrow.stream = function () {
|
||
|
return undefined;
|
||
|
};
|
||
|
|
||
|
var suggestions = search.get_suggestions(query);
|
||
|
|
||
|
var expected = [
|
||
|
"",
|
||
|
"in:all",
|
||
|
"is:private",
|
||
|
"is:starred",
|
||
|
"is:mentioned",
|
||
|
"sender:bob@zulip.com",
|
||
|
"stream:devel",
|
||
|
"stream:office"
|
||
|
];
|
||
|
|
||
|
assert.deepEqual(suggestions, expected);
|
||
|
}());
|
||
|
|
||
|
(function test_topic_suggestions() {
|
||
|
var query = 'te';
|
||
|
|
||
|
global.subs.subscribed_streams = function () {
|
||
|
return ['office'];
|
||
|
};
|
||
|
|
||
|
global.narrow.stream = function () {
|
||
|
return 'office';
|
||
|
};
|
||
|
|
||
|
global.recent_subjects = {
|
||
|
office: [
|
||
|
{subject: 'team'},
|
||
|
{subject: 'ignore'},
|
||
|
{subject: 'test'}
|
||
|
]
|
||
|
};
|
||
|
|
||
|
var suggestions = search.get_suggestions(query);
|
||
|
|
||
|
var expected = [
|
||
|
"te",
|
||
|
"stream:office topic:team",
|
||
|
"stream:office topic:test",
|
||
|
""
|
||
|
];
|
||
|
|
||
|
assert.deepEqual(suggestions, expected);
|
||
|
}());
|
||
|
|
||
|
|
||
|
(function test_people_suggestions() {
|
||
|
var query = 'te';
|
||
|
|
||
|
global.subs.subscribed_streams = function () {
|
||
|
return [];
|
||
|
};
|
||
|
|
||
|
global.narrow.stream = function () {
|
||
|
return;
|
||
|
};
|
||
|
|
||
|
global.page_params.people_list = [
|
||
|
{
|
||
|
email: 'ted@zulip.com',
|
||
|
full_name: 'Ted Smith'
|
||
|
},
|
||
|
{
|
||
|
email: 'alice@zulip.com',
|
||
|
full_name: 'Alice Ignore'
|
||
|
}
|
||
|
];
|
||
|
|
||
|
global.recent_subjects = {
|
||
|
office: [
|
||
|
{subject: 'team'},
|
||
|
{subject: 'ignore'},
|
||
|
{subject: 'test'}
|
||
|
]
|
||
|
};
|
||
|
|
||
|
var suggestions = search.get_suggestions(query);
|
||
|
|
||
|
var expected = [
|
||
|
"te",
|
||
|
"pm-with:ted@zulip.com",
|
||
|
"sender:ted@zulip.com",
|
||
|
""
|
||
|
];
|
||
|
|
||
|
assert.deepEqual(suggestions, expected);
|
||
|
}());
|