mirror of https://github.com/zulip/zulip.git
181 lines
5.4 KiB
JavaScript
181 lines
5.4 KiB
JavaScript
set_global('$', global.make_zjquery());
|
|
|
|
set_global('channel', {});
|
|
|
|
zrequire('alert_words');
|
|
zrequire('alert_words_ui');
|
|
|
|
alert_words.initialize({
|
|
alert_words: ['foo', 'bar'],
|
|
});
|
|
|
|
run_test('render_alert_words_ui', () => {
|
|
const word_list = $('#alert_words_list');
|
|
const appended = [];
|
|
word_list.append = (rendered) => {
|
|
appended.push(rendered);
|
|
};
|
|
|
|
const alert_word_items = $.create('alert_word_items');
|
|
word_list.set_find_results('.alert-word-item', alert_word_items);
|
|
|
|
global.stub_templates((name, args) => {
|
|
assert.equal(name, 'alert_word_settings_item');
|
|
return 'stub-' + args.word;
|
|
});
|
|
|
|
const new_alert_word = $('#create_alert_word_name');
|
|
assert(!new_alert_word.is_focused());
|
|
|
|
alert_words_ui.render_alert_words_ui();
|
|
|
|
assert.deepEqual(appended, [
|
|
'stub-',
|
|
'stub-bar',
|
|
'stub-foo',
|
|
]);
|
|
assert(new_alert_word.is_focused());
|
|
});
|
|
|
|
run_test('add_alert_word', () => {
|
|
alert_words_ui.render_alert_words_ui = () => {}; // we've already tested this above
|
|
|
|
alert_words_ui.set_up_alert_words();
|
|
|
|
const word_list = $('#alert_words_list');
|
|
const add_func = word_list.get_on_handler('click', '#create_alert_word_button');
|
|
|
|
const new_alert_word = $('#create_alert_word_name');
|
|
const alert_word_status = $('#alert_word_status');
|
|
const alert_word_status_text = $('.alert_word_status_text');
|
|
alert_word_status.set_find_results('.alert_word_status_text', alert_word_status_text);
|
|
|
|
// add '' as alert word
|
|
add_func();
|
|
assert.equal(new_alert_word.val(), '');
|
|
assert(alert_word_status.hasClass('alert-danger'));
|
|
assert.equal(alert_word_status_text.text(), "translated: Alert word can't be empty!");
|
|
assert(alert_word_status.visible());
|
|
|
|
// add 'foo' as alert word (existing word)
|
|
new_alert_word.val('foo');
|
|
|
|
add_func();
|
|
assert(alert_word_status.hasClass('alert-danger'));
|
|
assert.equal(alert_word_status_text.text(), "translated: Alert word already exists!");
|
|
assert(alert_word_status.visible());
|
|
|
|
// add 'zot' as alert word (new word)
|
|
new_alert_word.val('zot');
|
|
|
|
let success_func;
|
|
let fail_func;
|
|
channel.post = (opts) => {
|
|
assert.equal(opts.url, '/json/users/me/alert_words');
|
|
assert.deepEqual(opts.data, {alert_words: '["zot"]'});
|
|
success_func = opts.success;
|
|
fail_func = opts.error;
|
|
};
|
|
|
|
add_func();
|
|
|
|
// test failure
|
|
fail_func();
|
|
assert(alert_word_status.hasClass('alert-danger'));
|
|
assert.equal(alert_word_status_text.text(), "translated: Error adding alert word!");
|
|
assert(alert_word_status.visible());
|
|
|
|
// test success
|
|
success_func();
|
|
assert(alert_word_status.hasClass('alert-success'));
|
|
assert.equal(alert_word_status_text.text(), "translated: Alert word \"zot\" added successfully!");
|
|
assert(alert_word_status.visible());
|
|
});
|
|
|
|
run_test('add_alert_word_keypress', () => {
|
|
const word_list = $('#alert_words_list');
|
|
const keypress_func = word_list.get_on_handler('keypress', '#create_alert_word_name');
|
|
|
|
const new_alert_word = $('#create_alert_word_name');
|
|
new_alert_word.val('zot');
|
|
|
|
const event = {
|
|
preventDefault: () => {},
|
|
which: 13,
|
|
target: '#create_alert_word_name',
|
|
};
|
|
|
|
let called = false;
|
|
channel.post = (opts) => {
|
|
assert.deepEqual(opts.data, {alert_words: '["zot"]'});
|
|
called = true;
|
|
};
|
|
|
|
keypress_func(event);
|
|
assert(called);
|
|
});
|
|
|
|
run_test('remove_alert_word', () => {
|
|
const word_list = $('#alert_words_list');
|
|
const remove_func = word_list.get_on_handler('click', '.remove-alert-word');
|
|
|
|
const remove_alert_word = $('.remove-alert-word');
|
|
const list_item = $('li.alert-word-item');
|
|
const val_item = $('span.value');
|
|
val_item.text(i18n.t('zot'));
|
|
|
|
remove_alert_word.set_parents_result('li', list_item);
|
|
list_item.set_find_results('.value', val_item);
|
|
|
|
const event = {
|
|
currentTarget: '.remove-alert-word',
|
|
};
|
|
|
|
let success_func;
|
|
let fail_func;
|
|
channel.del = (opts) => {
|
|
assert.equal(opts.url, '/json/users/me/alert_words');
|
|
assert.deepEqual(opts.data, {alert_words: '["translated: zot"]'});
|
|
success_func = opts.success;
|
|
fail_func = opts.error;
|
|
};
|
|
|
|
remove_func(event);
|
|
|
|
const alert_word_status = $('#alert_word_status');
|
|
const alert_word_status_text = $('.alert_word_status_text');
|
|
alert_word_status.set_find_results('.alert_word_status_text', alert_word_status_text);
|
|
|
|
// test failure
|
|
fail_func();
|
|
assert(alert_word_status.hasClass('alert-danger'));
|
|
assert.equal(alert_word_status_text.text(), "translated: Error removing alert word!");
|
|
assert(alert_word_status.visible());
|
|
|
|
// test success
|
|
success_func();
|
|
assert(alert_word_status.hasClass('alert-success'));
|
|
assert.equal(alert_word_status_text.text(), "translated: Alert word removed successfully!");
|
|
assert(alert_word_status.visible());
|
|
});
|
|
|
|
run_test('close_status_message', () => {
|
|
const alert_word_settings = $('#alert-word-settings');
|
|
const close = alert_word_settings.get_on_handler('click', '.close-alert-word-status');
|
|
|
|
const alert = $('.alert');
|
|
const close_btn = $('.close-alert-word-status');
|
|
close_btn.set_parents_result('.alert', alert);
|
|
|
|
alert.show();
|
|
|
|
const event = {
|
|
preventDefault: () => {},
|
|
currentTarget: '.close-alert-word-status',
|
|
};
|
|
|
|
assert(alert.visible());
|
|
close(event);
|
|
assert(!alert.visible());
|
|
});
|