From df41fcfdd022bb5a96b7b4693c3f8a8466181b55 Mon Sep 17 00:00:00 2001 From: Ken Tsang Date: Wed, 21 Feb 2018 17:41:19 +0000 Subject: [PATCH] Add button to toggle precompiled letters on/off --- app/main/views/service_settings.py | 8 +++++ app/templates/views/service-settings.html | 7 ++++ .../test_service_setting_permissions.py | 36 +++++++++---------- 3 files changed, 31 insertions(+), 20 deletions(-) diff --git a/app/main/views/service_settings.py b/app/main/views/service_settings.py index d39e41058..f82346cbd 100644 --- a/app/main/views/service_settings.py +++ b/app/main/views/service_settings.py @@ -289,6 +289,14 @@ def service_switch_email_auth(service_id): return redirect(url_for('.service_settings', service_id=service_id)) +@main.route("/services//service-settings/can-send-precompiled-letter") +@login_required +@user_has_permissions(admin_override=True) +def service_switch_can_send_precompiled_letter(service_id): + switch_service_permissions(service_id, 'precompiled_letter') + return redirect(url_for('.service_settings', service_id=service_id)) + + @main.route("/services//service-settings/archive", methods=['GET', 'POST']) @login_required @user_has_permissions('manage_settings', admin_override=True) diff --git a/app/templates/views/service-settings.html b/app/templates/views/service-settings.html index d6de69edb..134b114a3 100644 --- a/app/templates/views/service-settings.html +++ b/app/templates/views/service-settings.html @@ -323,6 +323,13 @@ {% endif %} {% endif %} + {% if 'letter' in current_service.permissions %} +
  • + + {{ 'Stop sending precompiled letters' if 'precompiled_letter' in current_service.permissions else 'Allow to send precompiled letters' }} + +
  • + {% endif %}
  • {{ 'Stop editing user auth' if 'email_auth' in current_service.permissions else 'Allow editing user auth' }} diff --git a/tests/app/main/views/service_settings/test_service_setting_permissions.py b/tests/app/main/views/service_settings/test_service_setting_permissions.py index 57a6cdcf1..fdcfa55e9 100644 --- a/tests/app/main/views/service_settings/test_service_setting_permissions.py +++ b/tests/app/main/views/service_settings/test_service_setting_permissions.py @@ -35,6 +35,11 @@ def get_service_settings_page( ({'permissions': ['sms']}, '.service_switch_can_send_sms', {}, 'Stop sending sms'), ({'permissions': []}, '.service_switch_can_send_sms', {}, 'Allow to send sms'), + ({'permissions': ['letter', 'precompiled_letter']}, + '.service_switch_can_send_precompiled_letter', {}, 'Stop sending precompiled letters'), + ({'permissions': ['letter']}, + '.service_switch_can_send_precompiled_letter', {}, 'Allow to send precompiled letters'), + ({'permissions': ['sms']}, '.service_set_inbound_number', {'set_inbound_sms': True}, 'Allow inbound sms'), ({'active': True}, '.archive_service', {}, 'Archive service'), @@ -48,32 +53,23 @@ def test_service_setting_toggles_show(get_service_settings_page, service_one, se assert page.find('a', {'class': 'button', 'href': button_url}).text.strip() == text -@pytest.mark.parametrize('permissions', [ - ['inbound_sms'], [] +@pytest.mark.parametrize('permissions,permissions_text', [ + ('inbound_sms', 'inbound sms'), # no sms parent permission + ('precompiled_letter', 'precompiled letters'), # no letter parent permission + # also test no permissions set + ('', 'inbound sms'), + ('', 'precompiled letters') ]) -def test_service_settings_doesnt_show_inbound_options_if_sms_disabled( +def test_service_settings_doesnt_show_option_if_parent_permission_disabled( get_service_settings_page, service_one, - permissions + permissions, + permissions_text ): - service_one['permissions'] = permissions + service_one['permissions'] = [permissions] page = get_service_settings_page() toggles = page.find_all('a', {'class': 'button'}) - assert not any(button for button in toggles if 'inbound sms' in button.text) - - -@pytest.mark.parametrize('permissions', [ - ['letters_as_pdf'], [] -]) -def test_service_settings_doesnt_show_letters_as_pdf_options_if_letters_disabled( - get_service_settings_page, - service_one, - permissions -): - service_one['permissions'] = permissions - page = get_service_settings_page() - toggles = page.find_all('a', {'class': 'button'}) - assert not any(button for button in toggles if 'letters as PDF' in button.text) + assert not any(button for button in toggles if permissions_text in button.text) @pytest.mark.parametrize('service_fields, hidden_button_text', [