From 603139500aab130c22dff80c35151eeef61811ff Mon Sep 17 00:00:00 2001 From: Shubham Dhama Date: Wed, 13 Jun 2018 20:29:15 +0530 Subject: [PATCH] settings_bots: Extract logic for ability to create bots. This is a minor refactor/deduplication and renaming of 'admin_only_bot_creation' to 'can_create_new_bots' --- frontend_tests/node_tests/settings_bots.js | 12 ++++++++++++ static/js/settings.js | 4 +--- static/js/settings_bots.js | 16 +++++++++++----- .../templates/settings/bot-settings.handlebars | 4 ++-- 4 files changed, 26 insertions(+), 10 deletions(-) diff --git a/frontend_tests/node_tests/settings_bots.js b/frontend_tests/node_tests/settings_bots.js index bd738ff26b..fb3ca3e2d9 100644 --- a/frontend_tests/node_tests/settings_bots.js +++ b/frontend_tests/node_tests/settings_bots.js @@ -195,3 +195,15 @@ run_test('test tab clicks', () => { assert(forms.inactive.visible()); }()); }); + +run_test('can_create_new_bots', () => { + page_params.is_admin = true; + assert(settings_bots.can_create_new_bots()); + + page_params.is_admin = false; + page_params.realm_bot_creation_policy = 1; + assert(settings_bots.can_create_new_bots()); + + page_params.realm_bot_creation_policy = 3; + assert(!settings_bots.can_create_new_bots()); +}); diff --git a/static/js/settings.js b/static/js/settings.js index e006ed54b1..52299c6d29 100644 --- a/static/js/settings.js +++ b/static/js/settings.js @@ -136,9 +136,7 @@ exports.setup_page = function () { zuliprc: 'zuliprc', botserverrc: 'botserverrc', timezones: moment.tz.names(), - admin_only_bot_creation: page_params.is_admin || - page_params.realm_bot_creation_policy !== - settings_bots.bot_creation_policy_values.admins_only.code, + can_create_new_bots: settings_bots.can_create_new_bots(), settings_label: settings.settings_label, }); diff --git a/static/js/settings_bots.js b/static/js/settings_bots.js index 545c822bed..21162bf70e 100644 --- a/static/js/settings_bots.js +++ b/static/js/settings_bots.js @@ -72,8 +72,7 @@ function render_bots() { user_owns_an_active_bot = user_owns_an_active_bot || elem.is_active; }); - if (page_params.is_admin || page_params.realm_bot_creation_policy !== - exports.bot_creation_policy_values.admins_only.code) { + if (settings_bots.can_create_new_bots()) { if (!user_owns_an_active_bot) { focus_tab.add_a_new_bot_tab(); return; @@ -146,6 +145,15 @@ exports.bot_creation_policy_values = { }, }; +exports.can_create_new_bots = function () { + if (page_params.is_admin) { + return true; + } + + return page_params.realm_bot_creation_policy !== + exports.bot_creation_policy_values.admins_only.code; +}; + exports.update_bot_settings_tip = function () { var permission_type = exports.bot_creation_policy_values; var current_permission = page_params.realm_bot_creation_policy; @@ -164,9 +172,7 @@ exports.update_bot_permissions_ui = function () { exports.update_bot_settings_tip(); $('#bot_table_error').hide(); $("#id_realm_bot_creation_policy").val(page_params.realm_bot_creation_policy); - if (page_params.realm_bot_creation_policy === - exports.bot_creation_policy_values.admins_only.code && - !page_params.is_admin) { + if (!exports.can_create_new_bots()) { $('#create_bot_form').hide(); $('.add-a-new-bot-tab').hide(); focus_tab.active_bots_tab(); diff --git a/static/templates/settings/bot-settings.handlebars b/static/templates/settings/bot-settings.handlebars index 7eb55e1877..1540b3fb13 100644 --- a/static/templates/settings/bot-settings.handlebars +++ b/static/templates/settings/bot-settings.handlebars @@ -15,7 +15,7 @@
    @@ -28,7 +28,7 @@
    + class="form-horizontal no-padding {{#unless can_create_new_bots}}hide{{/unless}}">