zulip/frontend_tests/node_tests/submessage.js
Steve Howell bfc13ecea4 submessages: Just send content for submessage events.
For some reason in my original version I was sending both
content and data to the client for submessage events,
where data === JSON.parse(content).  There's no reason
to not just let the client parse it, since the client
already does it for data that comes on the original
message, and since we might eventually have non-JSON
payloads.

The server still continues to validate that the payload
is JSON, and the client will blueslip if the server
regressses and sends bad JSON for some reason.
2018-05-30 13:53:11 -07:00

86 lines
1.8 KiB
JavaScript

zrequire('submessage');
set_global('channel', {});
set_global('widgetize', {});
run_test('get_message_events', () => {
var msg = {};
assert.equal(submessage.get_message_events(msg), undefined);
msg = {
submessages: [],
};
assert.equal(submessage.get_message_events(msg), undefined);
var submessages = [
{id: 222, sender_id: 99, content: '84'},
{id: 9, sender_id: 33, content: '42'},
];
msg = {
locally_echoed: true,
submessages: submessages,
};
assert.equal(submessage.get_message_events(msg), undefined);
msg = {
submessages: submessages,
};
assert.deepEqual(submessage.get_message_events(msg), [
{sender_id: 33, data: 42},
{sender_id: 99, data: 84},
]);
});
run_test('make_server_callback', () => {
var message_id = 444;
var callback = submessage.make_server_callback(message_id);
var was_posted;
channel.post = function (opts) {
was_posted = true;
assert.deepEqual(opts, {
url: '/json/submessage',
data: {
message_id: message_id,
msg_type: 'whatever',
content: '{"foo":32}',
},
});
};
callback({
msg_type: 'whatever',
data: {foo: 32},
});
assert(was_posted);
});
run_test('handle_event', () => {
const message = {
id: 42,
};
const event = {
msg_type: 'widget',
sender_id: 99,
message_id: message.id,
content: '"some_data"',
};
var args;
widgetize.handle_event = (opts) => {
args = opts;
};
submessage.handle_event(event);
assert.deepEqual(args, {
sender_id: 99,
message_id: 42,
data: 'some_data',
});
});