From 2ccc7711aeeb1cf776a1e171e03f2e6ae350b482 Mon Sep 17 00:00:00 2001 From: Joshua Pan Date: Tue, 17 Jul 2018 11:18:39 -0700 Subject: [PATCH] tests: Test adding alert words ui. --- frontend_tests/node_tests/alert_words_ui.js | 57 +++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/frontend_tests/node_tests/alert_words_ui.js b/frontend_tests/node_tests/alert_words_ui.js index 3e74937ddecd1..750a0e1603763 100644 --- a/frontend_tests/node_tests/alert_words_ui.js +++ b/frontend_tests/node_tests/alert_words_ui.js @@ -1,9 +1,11 @@ set_global('$', global.make_zjquery()); +set_global('i18n', global.stub_i18n); set_global('templates', {}); set_global('alert_words', { words: ['foo', 'bar'], }); +set_global('channel', {}); zrequire('alert_words_ui'); @@ -35,3 +37,58 @@ run_test('render_alert_words_ui', () => { 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(); + + var word_list = $('#alert_words_list'); + var add_func = word_list.get_on_handler('click', '#create_alert_word_button'); + + var new_alert_word = $('#create_alert_word_name'); + var alert_word_status = $('#alert_word_status'); + var 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'); + + var success_func; + var 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 added successfully!"); + assert(alert_word_status.visible()); +}); +