Files
zulip/frontend_tests/node_tests/server_events.js
Steve Howell 475eb21a5e Revert commits related to client_message_id.
I pushed a bunch of commits that attempted to introduce
the concept of `client_message_id` into our server, as
part of cleaning up our codepaths related to messages you
sent (both for the locally echoed case and for the host
case).

When we deployed this, we had some strange failures involving
double-echoed messages and issues advancing the pointer that appeared
related to #5779.  We didn't get to the bottom of exactly why the PR
caused havoc, but I decided there was a cleaner approach, anyway.
2017-07-14 12:13:35 -07:00

160 lines
4.0 KiB
JavaScript

var assert = require('assert');
add_dependencies({
util: 'js/util.js',
tutorial: 'js/tutorial.js',
server_events_dispatch: 'js/server_events_dispatch.js',
});
var noop = function () {};
set_global('document', {});
set_global('window', {
addEventListener: noop,
});
global.stub_out_jquery();
set_global('blueslip', {});
set_global('channel', {});
set_global('home_msg_list', {
select_id: noop,
selected_id: function () {return 1;},
});
set_global('page_params', {test_suite: false});
set_global('reload', {
is_in_progress: function () {return false;},
});
// we also directly write to pointer
set_global('pointer', {});
set_global('echo', {
process_from_server: function (messages) {
return messages;
},
set_realm_filters: noop,
});
set_global('ui_report', {
hide_error: function () { return false; },
show_error: function () { return false; },
});
var server_events = require('js/server_events.js');
server_events.home_view_loaded();
(function test_message_event() {
var event = {
type: 'message',
message: {
content: 'hello',
},
flags: [],
};
var inserted;
set_global('message_events', {
insert_new_messages: function (messages) {
assert.equal(messages[0].content, event.message.content);
inserted = true;
},
});
server_events._get_events_success([event]);
assert(inserted);
}());
(function test_pointer_event() {
var event = {
type: 'pointer',
pointer: 999,
};
global.pointer.furthest_read = 0;
global.pointer.server_furthest_read = 0;
server_events._get_events_success([event]);
assert.equal(global.pointer.furthest_read, event.pointer);
assert.equal(global.pointer.server_furthest_read, event.pointer);
}());
// Start blueslip tests here
var setup = function (results) {
server_events.home_view_loaded();
set_global('message_events', {
insert_new_messages: function () {
throw Error('insert error');
},
update_messages: function () {
throw Error('update error');
},
});
set_global('stream_events', {
update_property: function () {
throw Error('subs update error');
},
});
global.blueslip.error = function (msg, more_info, stack) {
results.msg = msg;
results.more_info = more_info;
results.stack = stack;
};
global.blueslip.exception_msg = function (ex) {
return ex.message;
};
};
(function test_event_dispatch_error() {
var results = {};
setup(results);
var data = {events: [{type: 'stream', op: 'update', id: 1, other: 'thing'}]};
global.channel.get = function (options) {
options.success(data);
};
server_events.restart_get_events();
assert.equal(results.msg, 'Failed to process an event\n' +
'subs update error');
assert.equal(results.more_info.event.type , 'stream');
assert.equal(results.more_info.event.op , 'update');
assert.equal(results.more_info.event.id , 1);
assert.equal(results.more_info.other , undefined);
}());
(function test_event_new_message_error() {
var results = {};
setup(results);
var data = {events: [{type: 'message', id: 1, other: 'thing', message: {}}]};
global.channel.get = function (options) {
options.success(data);
};
server_events.restart_get_events();
assert.equal(results.msg, 'Failed to insert new messages\n' +
'insert error');
assert.equal(results.more_info, undefined);
}());
(function test_event_edit_message_error() {
var results = {};
setup(results);
var data = {events: [{type: 'update_message', id: 1, other: 'thing'}]};
global.channel.get = function (options) {
options.success(data);
};
server_events.restart_get_events();
assert.equal(results.msg, 'Failed to update messages\n' +
'update error');
assert.equal(results.more_info, undefined);
}());