mirror of
https://github.com/zulip/zulip.git
synced 2025-11-05 14:35:27 +00:00
This module was exposing its functions as globals. This PR fixes it use the IIFE module style that we use in our other modules.
218 lines
5.4 KiB
JavaScript
218 lines
5.4 KiB
JavaScript
var noop = function () {};
|
|
var return_false = function () { return false; };
|
|
|
|
set_global('document', {
|
|
location: {
|
|
},
|
|
});
|
|
|
|
set_global('page_params', {
|
|
use_websockets: false,
|
|
});
|
|
|
|
set_global('$', function () {
|
|
});
|
|
|
|
add_dependencies({
|
|
compose: 'js/compose',
|
|
});
|
|
|
|
set_global('$', global.make_zjquery());
|
|
|
|
add_dependencies({
|
|
compose_state: 'js/compose_state',
|
|
people: 'js/people',
|
|
util: 'js/util',
|
|
compose_ui: 'js/compose_ui',
|
|
});
|
|
|
|
var compose_actions = require('js/compose_actions.js');
|
|
|
|
var start = compose_actions.start;
|
|
var cancel = compose_actions.cancel;
|
|
var get_focus_area = compose_actions._get_focus_area;
|
|
var respond_to_message = compose_actions.respond_to_message;
|
|
var reply_with_mention = compose_actions.reply_with_mention;
|
|
|
|
var compose_state = global.compose_state;
|
|
|
|
set_global('reload', {
|
|
is_in_progress: return_false,
|
|
});
|
|
|
|
set_global('notifications', {
|
|
clear_compose_notifications: noop,
|
|
});
|
|
|
|
set_global('compose_fade', {
|
|
clear_compose: noop,
|
|
});
|
|
|
|
set_global('drafts', {
|
|
update_draft: noop,
|
|
});
|
|
|
|
set_global('resize', {
|
|
resize_bottom_whitespace: noop,
|
|
});
|
|
|
|
set_global('narrow_state', {
|
|
set_compose_defaults: noop,
|
|
});
|
|
|
|
set_global('unread_ops', {
|
|
mark_message_as_read: noop,
|
|
});
|
|
|
|
set_global('common', {
|
|
status_classes: 'status_classes',
|
|
});
|
|
|
|
function stub_selected_message(msg) {
|
|
set_global('current_msg_list', {
|
|
selected_message: function () {
|
|
return msg;
|
|
},
|
|
});
|
|
}
|
|
|
|
function assert_visible(sel) {
|
|
assert($(sel).visible());
|
|
}
|
|
|
|
function assert_hidden(sel) {
|
|
assert(!$(sel).visible());
|
|
}
|
|
|
|
(function test_initial_state() {
|
|
assert.equal(compose_state.composing(), false);
|
|
assert.equal(compose_state.get_message_type(), false);
|
|
assert.equal(compose_state.has_message_content(), false);
|
|
}());
|
|
|
|
(function test_start() {
|
|
compose_actions.autosize_message_content = noop;
|
|
compose_actions.expand_compose_box = noop;
|
|
compose_actions.set_focus = noop;
|
|
compose_actions.complete_starting_tasks = noop;
|
|
compose_actions.blur_textarea = noop;
|
|
compose_actions.clear_textarea = noop;
|
|
|
|
// Start stream message
|
|
global.narrow_state.set_compose_defaults = function (opts) {
|
|
opts.stream = 'stream1';
|
|
opts.subject = 'topic1';
|
|
};
|
|
|
|
var opts = {};
|
|
start('stream', opts);
|
|
|
|
assert_visible('#stream-message');
|
|
assert_hidden('#private-message');
|
|
|
|
assert.equal($('#stream').val(), 'stream1');
|
|
assert.equal($('#subject').val(), 'topic1');
|
|
assert.equal(compose_state.get_message_type(), 'stream');
|
|
assert(compose_state.composing());
|
|
|
|
// Start PM
|
|
global.narrow_state.set_compose_defaults = function (opts) {
|
|
opts.private_message_recipient = 'foo@example.com';
|
|
};
|
|
|
|
opts = {
|
|
content: 'hello',
|
|
};
|
|
|
|
$('#new_message_content').trigger = noop;
|
|
start('private', opts);
|
|
|
|
assert_hidden('#stream-message');
|
|
assert_visible('#private-message');
|
|
|
|
assert.equal($('#private_message_recipient').val(), 'foo@example.com');
|
|
assert.equal($('#new_message_content').val(), 'hello');
|
|
assert.equal(compose_state.get_message_type(), 'private');
|
|
assert(compose_state.composing());
|
|
|
|
// Cancel compose.
|
|
assert_hidden('#compose_controls');
|
|
cancel();
|
|
assert_visible('#compose_controls');
|
|
assert_hidden('#private-message');
|
|
assert(!compose_state.composing());
|
|
}());
|
|
|
|
(function test_respond_to_message() {
|
|
// Test PM
|
|
var person = {
|
|
user_id: 22,
|
|
email: 'alice@example.com',
|
|
full_name: 'Alice',
|
|
};
|
|
people.add_in_realm(person);
|
|
|
|
var msg = {
|
|
type: 'private',
|
|
sender_id: person.user_id,
|
|
};
|
|
stub_selected_message(msg);
|
|
|
|
var opts = {
|
|
reply_type: 'personal',
|
|
};
|
|
|
|
respond_to_message(opts);
|
|
assert.equal($('#private_message_recipient').val(), 'alice@example.com');
|
|
|
|
// Test stream
|
|
msg = {
|
|
type: 'stream',
|
|
stream: 'devel',
|
|
subject: 'python',
|
|
reply_to: 'bob', // compose.start needs this for dubious reasons
|
|
};
|
|
stub_selected_message(msg);
|
|
|
|
opts = {
|
|
};
|
|
|
|
respond_to_message(opts);
|
|
assert.equal($('#stream').val(), 'devel');
|
|
}());
|
|
|
|
(function test_reply_with_mention() {
|
|
var msg = {
|
|
type: 'stream',
|
|
stream: 'devel',
|
|
subject: 'python',
|
|
reply_to: 'bob', // compose.start needs this for dubious reasons
|
|
sender_full_name: 'Bob Roberts',
|
|
};
|
|
stub_selected_message(msg);
|
|
|
|
var opts = {
|
|
};
|
|
|
|
reply_with_mention(opts);
|
|
assert.equal($('#stream').val(), 'devel');
|
|
assert.equal($('#new_message_content').val(), '@**Bob Roberts** ');
|
|
assert(compose_state.has_message_content());
|
|
}());
|
|
|
|
(function test_get_focus_area() {
|
|
assert.equal(get_focus_area('private', {}), 'private_message_recipient');
|
|
assert.equal(get_focus_area('private', {
|
|
private_message_recipient: 'bob@example.com'}), 'new_message_content');
|
|
assert.equal(get_focus_area('stream', {}), 'stream');
|
|
assert.equal(get_focus_area('stream', {stream: 'fun'}),
|
|
'subject');
|
|
assert.equal(get_focus_area('stream', {stream: 'fun',
|
|
subject: 'more'}),
|
|
'new_message_content');
|
|
assert.equal(get_focus_area('stream', {stream: 'fun',
|
|
subject: 'more',
|
|
trigger: 'new topic button'}),
|
|
'subject');
|
|
}());
|