From 8f4081bdb461c3e1fa66a729e2619542061babf6 Mon Sep 17 00:00:00 2001 From: Chris Hill-Scott Date: Wed, 15 Nov 2017 16:04:50 +0000 Subject: [PATCH] Add a hint to explain why SMS auth is unavailable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If we’re going to ‘disable’ radio buttons then we should always tell users why the radio button is disabled. This is what we found with the API key choices anyway. --- app/templates/views/manage-users/permissions.html | 12 ++++++++++-- tests/app/main/views/test_manage_users.py | 14 +++++++++++++- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/app/templates/views/manage-users/permissions.html b/app/templates/views/manage-users/permissions.html index e23eef804..5d98cd0f2 100644 --- a/app/templates/views/manage-users/permissions.html +++ b/app/templates/views/manage-users/permissions.html @@ -23,5 +23,13 @@ {% if service_has_email_auth %} - {{ radios(form.login_authentication, disable=['sms_auth' if user_has_no_mobile_number]) }} -{% endif %} \ No newline at end of file + {% if user_has_no_mobile_number %} + {{ radios( + form.login_authentication, + disable=['sms_auth'], + option_hints={'sms_auth': 'Not available because this team member hasn’t added a phone number to their profile'|safe} + ) }} + {% else %} + {{ radios(form.login_authentication) }} + {% endif %} +{% endif %} diff --git a/tests/app/main/views/test_manage_users.py b/tests/app/main/views/test_manage_users.py index c54da8a70..3fb303e31 100644 --- a/tests/app/main/views/test_manage_users.py +++ b/tests/app/main/views/test_manage_users.py @@ -114,20 +114,29 @@ def test_manage_users_page_shows_member_auth_type_if_service_has_email_auth_acti assert bool(page.select_one('.tick-cross-list-hint')) == displays_auth_type -@pytest.mark.parametrize('user, sms_option_disabled', [ +@pytest.mark.parametrize('user, sms_option_disabled, expected_label', [ ( active_user_no_mobile, True, + """ + Text message code + Not available because this team member hasn’t added a + phone number to their profile + """, ), ( active_user_with_permissions, False, + """ + Text message code + """, ), ]) def test_user_with_no_mobile_number_cant_be_set_to_sms_auth( client_request, user, sms_option_disabled, + expected_label, service_one, mocker ): @@ -142,6 +151,9 @@ def test_user_with_no_mobile_number_cant_be_set_to_sms_auth( sms_auth_radio_button = page.select_one('input[value="sms_auth"]') assert sms_auth_radio_button.has_attr("disabled") == sms_option_disabled + assert normalize_spaces( + page.select_one('label[for=login_authentication-0]').text + ) == normalize_spaces(expected_label) @pytest.mark.parametrize('endpoint, extra_args, expected_checkboxes', [