2016-12-29 23:50:24 +01:00
|
|
|
set_global('document', null);
|
|
|
|
set_global('page_params', {});
|
|
|
|
|
2017-04-04 15:44:45 +02:00
|
|
|
global.stub_out_jquery();
|
|
|
|
|
2017-11-08 17:44:35 +01:00
|
|
|
zrequire('XDate', 'node_modules/xdate/src/xdate');
|
|
|
|
zrequire('message_edit');
|
2016-12-29 23:50:24 +01:00
|
|
|
|
|
|
|
var get_editability = message_edit.get_editability;
|
|
|
|
var editability_types = message_edit.editability_types;
|
|
|
|
|
|
|
|
(function test_get_editability() {
|
|
|
|
// You can't edit a null message
|
|
|
|
assert.equal(get_editability(null), editability_types.NO);
|
|
|
|
// You can't edit a message you didn't send
|
|
|
|
assert.equal(get_editability({
|
|
|
|
sent_by_me: false,
|
|
|
|
}), editability_types.NO);
|
|
|
|
|
2017-07-18 14:44:29 +02:00
|
|
|
// Failed request are currently not editable (though we want to
|
|
|
|
// change this back).
|
2016-12-29 23:50:24 +01:00
|
|
|
assert.equal(get_editability({
|
|
|
|
sent_by_me: true,
|
|
|
|
failed_request: true,
|
2017-07-18 14:44:29 +02:00
|
|
|
}), editability_types.NO);
|
2016-12-29 23:50:24 +01:00
|
|
|
|
|
|
|
// Locally echoed messages are not editable, since the message hasn't
|
|
|
|
// finished being sent yet.
|
|
|
|
assert.equal(get_editability({
|
|
|
|
sent_by_me: true,
|
|
|
|
local_id: 25,
|
|
|
|
}), editability_types.NO);
|
|
|
|
|
|
|
|
// For the rest of these tests, we only consider messages sent by the
|
|
|
|
// user, and that were successfully sent (i.e. no failed_request or local_id)
|
|
|
|
var message = {
|
2017-01-12 00:17:43 +01:00
|
|
|
sent_by_me: true,
|
2016-12-29 23:50:24 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
global.page_params = {
|
2017-01-12 00:17:43 +01:00
|
|
|
realm_allow_message_editing: false,
|
2016-12-29 23:50:24 +01:00
|
|
|
};
|
|
|
|
assert.equal(get_editability(message), editability_types.NO);
|
|
|
|
|
|
|
|
global.page_params = {
|
|
|
|
realm_allow_message_editing: true,
|
|
|
|
// Limit of 0 means no time limit on editing messages
|
2017-01-12 00:17:43 +01:00
|
|
|
realm_message_content_edit_limit_seconds: 0,
|
2016-12-29 23:50:24 +01:00
|
|
|
};
|
|
|
|
assert.equal(get_editability(message), editability_types.FULL);
|
|
|
|
|
|
|
|
global.page_params = {
|
|
|
|
realm_allow_message_editing: true,
|
2017-01-12 00:17:43 +01:00
|
|
|
realm_message_content_edit_limit_seconds: 10,
|
2016-12-29 23:50:24 +01:00
|
|
|
};
|
|
|
|
var now = new Date();
|
|
|
|
var current_timestamp = now/1000;
|
|
|
|
message.timestamp = current_timestamp - 60;
|
|
|
|
// Have 55+10 > 60 seconds from message.timestamp to edit the message; we're good!
|
|
|
|
assert.equal(get_editability(message, 55), editability_types.FULL);
|
|
|
|
// It's been 60 > 45+10 since message.timestamp. When realm_allow_message_editing
|
|
|
|
// is true, we can edit the topic if there is one.
|
|
|
|
message.type = 'stream';
|
|
|
|
assert.equal(get_editability(message, 45), editability_types.TOPIC_ONLY);
|
|
|
|
message.type = 'private';
|
|
|
|
assert.equal(get_editability(message, 45), editability_types.NO_LONGER);
|
|
|
|
// If we don't pass a second argument, treat it as 0
|
|
|
|
assert.equal(get_editability(message), editability_types.NO_LONGER);
|
|
|
|
}());
|