diff --git a/app/main/views/jobs.py b/app/main/views/jobs.py index 4768275c1..ba4972a3b 100644 --- a/app/main/views/jobs.py +++ b/app/main/views/jobs.py @@ -227,6 +227,15 @@ def view_notifications(service_id, message_type=None): message_type=message_type, to=request.form.get('to', ''), ), + things_you_can_search_by={ + 'email': ['email address'], + 'sms': ['phone number'], + 'letter': [], + None: ['email address', 'phone number'], + }.get(message_type) + { + True: ['reference'], + False: [], + }.get(bool(current_service.api_keys)), download_link=url_for( '.download_notifications_csv', service_id=current_service.id, diff --git a/app/templates/views/notifications.html b/app/templates/views/notifications.html index d6645f917..27563124a 100644 --- a/app/templates/views/notifications.html +++ b/app/templates/views/notifications.html @@ -41,6 +41,13 @@ {{ textbox( search_form.to, width='1-1', + label=things_you_can_search_by|formatted_list( + conjunction='or', + before_each='', + after_each='', + prefix='Search by', + prefix_plural='Search by' + ) ) }}
diff --git a/tests/app/main/views/test_activity.py b/tests/app/main/views/test_activity.py index 6a3cf316d..41100e7fc 100644 --- a/tests/app/main/views/test_activity.py +++ b/tests/app/main/views/test_activity.py @@ -14,6 +14,8 @@ from tests.conftest import ( active_caseworking_user, active_user_view_permissions, active_user_with_permissions, + mock_get_api_keys, + mock_get_no_api_keys, mock_get_notifications, normalize_spaces, ) @@ -94,6 +96,7 @@ def test_can_show_notifications( mock_get_service_statistics, mock_get_service_data_retention, mock_has_no_jobs, + mock_get_no_api_keys, user, extra_args, expected_update_endpoint, @@ -176,6 +179,7 @@ def test_can_show_notifications_if_data_retention_not_available( mock_get_notifications, mock_get_service_statistics, mock_has_no_jobs, + mock_get_no_api_keys, ): page = client_request.get( 'main.view_notifications', @@ -234,6 +238,7 @@ def test_link_to_download_notifications( mock_get_service_statistics, mock_get_service_data_retention, mock_has_no_jobs, + mock_get_no_api_keys, user, query_parameters, expected_download_link, @@ -269,6 +274,7 @@ def test_letters_with_status_virus_scan_failed_shows_a_failure_description( service_one, mock_get_service_statistics, mock_get_service_data_retention, + mock_get_api_keys, ): mock_get_notifications( mocker, @@ -297,6 +303,7 @@ def test_should_not_show_preview_link_for_precompiled_letters_in_virus_states( service_one, mock_get_service_statistics, mock_get_service_data_retention, + mock_get_no_api_keys, letter_status, ): mock_get_notifications( @@ -320,6 +327,7 @@ def test_shows_message_when_no_notifications( mock_get_service_statistics, mock_get_service_data_retention, mock_get_notifications_with_no_notifications, + mock_get_no_api_keys, ): page = client_request.get( @@ -342,7 +350,7 @@ def test_shows_message_when_no_notifications( ( {}, {}, - 'Search by phone number or email address', + 'Search by email address or phone number', '', ), ( @@ -381,6 +389,7 @@ def test_search_recipient_form( mock_get_notifications, mock_get_service_statistics, mock_get_service_data_retention, + mock_get_no_api_keys, initial_query_arguments, form_post_data, expected_search_box_label, @@ -413,6 +422,62 @@ def test_search_recipient_form( assert field['value'] == expected_search_box_contents +@pytest.mark.parametrize(( + 'message_type,' + 'api_keys_mock,' + 'expected_search_box_label,' +), [ + ( + None, + mock_get_no_api_keys, + 'Search by email address or phone number', + ), + ( + None, + mock_get_api_keys, + 'Search by email address, phone number or reference', + ), + ( + 'sms', + mock_get_no_api_keys, + 'Search by phone number', + ), + ( + 'sms', + mock_get_api_keys, + 'Search by phone number or reference', + ), + ( + 'email', + mock_get_no_api_keys, + 'Search by email address', + ), + ( + 'email', + mock_get_api_keys, + 'Search by email address or reference', + ), +]) +def test_api_users_are_told_they_can_search_by_reference( + client_request, + mocker, + fake_uuid, + mock_get_notifications, + mock_get_service_statistics, + mock_get_service_data_retention, + message_type, + expected_search_box_label, + api_keys_mock, +): + api_keys_mock(mocker, fake_uuid) + page = client_request.get( + 'main.view_notifications', + service_id=SERVICE_ONE_ID, + message_type=message_type, + ) + assert page.select_one('label[for=to]').text.strip() == expected_search_box_label + + def test_should_show_notifications_for_a_service_with_next_previous( client_request, service_one, @@ -420,6 +485,7 @@ def test_should_show_notifications_for_a_service_with_next_previous( mock_get_notifications_with_previous_next, mock_get_service_statistics, mock_get_service_data_retention, + mock_get_no_api_keys, mocker, ): page = client_request.get( @@ -500,6 +566,7 @@ def test_html_contains_notification_id( mock_get_notifications, mock_get_service_statistics, mock_get_service_data_retention, + mock_get_no_api_keys, mocker, ): page = client_request.get( @@ -519,6 +586,7 @@ def test_html_contains_links_for_failed_notifications( active_user_with_permissions, mock_get_service_statistics, mock_get_service_data_retention, + mock_get_no_api_keys, mocker, ): mock_get_notifications(mocker, @@ -543,6 +611,7 @@ def test_redacts_templates_that_should_be_redacted( active_user_with_permissions, mock_get_service_statistics, mock_get_service_data_retention, + mock_get_no_api_keys, ): mock_get_notifications( mocker, @@ -576,6 +645,7 @@ def test_big_numbers_and_search_dont_show_for_letters( active_user_with_permissions, mock_get_service_statistics, mock_get_service_data_retention, + mock_get_no_api_keys, message_type, tablist_visible, search_bar_visible @@ -625,6 +695,7 @@ def test_sending_status_hint_displays_correctly_on_notifications_page( active_user_with_permissions, mock_get_service_statistics, mock_get_service_data_retention, + mock_get_no_api_keys, message_type, status, expected_hint_status, @@ -653,6 +724,7 @@ def test_should_expected_hint_for_letters( active_user_with_permissions, mock_get_service_statistics, mock_get_service_data_retention, + mock_get_no_api_keys, mocker, fake_uuid, is_precompiled_letter, diff --git a/tests/conftest.py b/tests/conftest.py index 5cc546af3..c360b0e48 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1754,7 +1754,8 @@ def mock_get_api_keys(mocker, fake_uuid): @pytest.fixture(scope='function') -def mock_get_no_api_keys(mocker): +# Second argument added so can be used interchangeably with `mock_get_api_keys` +def mock_get_no_api_keys(mocker, _=None): def _get_keys(service_id): keys = {'apiKeys': []} return keys