mirror of
https://github.com/zulip/zulip.git
synced 2025-11-10 00:46:03 +00:00
The functions add_dependencies() and set_global() are convenience methods that allow you to modify the global namespace while the current file is running but then have it be cleaned up by index.js when you're done. (imported from commit f75b8a10c19f773a8d2d3a8fa4bc39b1679566fe)
115 lines
2.5 KiB
JavaScript
115 lines
2.5 KiB
JavaScript
// These unit tests for static/js/message_list.js emphasize the model-ish
|
|
// aspects of the MessageList class. We have to stub out a few functions
|
|
// related to views and events to get the tests working.
|
|
|
|
var assert = require('assert');
|
|
|
|
add_dependencies({
|
|
_: 'third/underscore/underscore.js',
|
|
util: 'js/util.js',
|
|
MessageListView: 'js/message_list_view.js'
|
|
});
|
|
|
|
|
|
set_global('document', null);
|
|
set_global('$', function () {
|
|
return {
|
|
on: function () {},
|
|
trigger: function () {}
|
|
};
|
|
});
|
|
|
|
set_global('feature_flags', {});
|
|
|
|
var MessageList = require('js/message_list');
|
|
|
|
(function test_basics() {
|
|
var table;
|
|
var filter = {};
|
|
|
|
var list = new MessageList(table, filter);
|
|
|
|
var messages = [
|
|
{
|
|
id: 50,
|
|
content: 'fifty'
|
|
},
|
|
{
|
|
id: 60
|
|
},
|
|
{
|
|
id: 70
|
|
},
|
|
{
|
|
id: 80
|
|
}
|
|
];
|
|
|
|
assert.equal(list.empty(), true);
|
|
|
|
list.append(messages, true);
|
|
|
|
assert.equal(list.empty(), false);
|
|
assert.equal(list.first().id, 50);
|
|
assert.equal(list.last().id, 80);
|
|
|
|
assert.equal(list.get(50).content, 'fifty');
|
|
|
|
assert.equal(list.closest_id(49), 50);
|
|
assert.equal(list.closest_id(50), 50);
|
|
assert.equal(list.closest_id(51), 50);
|
|
assert.equal(list.closest_id(59), 60);
|
|
assert.equal(list.closest_id(60), 60);
|
|
assert.equal(list.closest_id(61), 60);
|
|
|
|
assert.deepEqual(list.all(), messages);
|
|
|
|
global.$.Event = function (ev) {
|
|
assert.equal(ev, 'message_selected.zulip');
|
|
};
|
|
list.select_id(50);
|
|
|
|
assert.equal(list.selected_id(), 50);
|
|
|
|
list.advance_past_messages([60, 80]);
|
|
assert.equal(list.selected_id(), 60);
|
|
|
|
var old_messages = [
|
|
{
|
|
id: 30
|
|
},
|
|
{
|
|
id: 40
|
|
}
|
|
];
|
|
list.prepend(old_messages, true);
|
|
assert.equal(list.first().id, 30);
|
|
assert.equal(list.last().id, 80);
|
|
|
|
var new_messages = [
|
|
{
|
|
id: 90
|
|
}
|
|
];
|
|
list.append(new_messages, true);
|
|
assert.equal(list.last().id, 90);
|
|
|
|
|
|
list.view.clear_table = function () {};
|
|
list.clear();
|
|
assert.deepEqual(list.all(), []);
|
|
|
|
}());
|
|
|
|
(function test_nth_most_recent_id() {
|
|
var table;
|
|
var filter = {};
|
|
|
|
var list = new MessageList(table, filter);
|
|
list.append([{id:10}, {id:20}, {id:30}]);
|
|
assert.equal(list.nth_most_recent_id(1), 30);
|
|
assert.equal(list.nth_most_recent_id(2), 20);
|
|
assert.equal(list.nth_most_recent_id(3), 10);
|
|
assert.equal(list.nth_most_recent_id(4), -1);
|
|
}());
|