mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-23 15:57:23 -04:00
Merge pull request #3420 from alphagov/search-letters
Let users search for letters
This commit is contained in:
@@ -169,8 +169,12 @@ def view_notifications(service_id, message_type=None):
|
|||||||
things_you_can_search_by={
|
things_you_can_search_by={
|
||||||
'email': ['email address'],
|
'email': ['email address'],
|
||||||
'sms': ['phone number'],
|
'sms': ['phone number'],
|
||||||
'letter': [],
|
# This should become ‘postal address’ not ‘first line…’ once
|
||||||
None: ['email address', 'phone number'],
|
# we’ve finished populating normalised addresses
|
||||||
|
'letter': ['first line of address', 'file name'],
|
||||||
|
# We say recipient here because combining all 3 types, plus
|
||||||
|
# reference gets too long for the hint text
|
||||||
|
None: ['recipient'],
|
||||||
}.get(message_type) + {
|
}.get(message_type) + {
|
||||||
True: ['reference'],
|
True: ['reference'],
|
||||||
False: [],
|
False: [],
|
||||||
|
|||||||
@@ -34,42 +34,39 @@
|
|||||||
'counts'
|
'counts'
|
||||||
) }}
|
) }}
|
||||||
|
|
||||||
{% call form_wrapper(
|
|
||||||
action=url_for('.view_notifications', service_id=current_service.id, message_type=message_type),
|
|
||||||
class="govuk-grid-row"
|
|
||||||
) %}
|
|
||||||
<div class="govuk-grid-column-three-quarters {% if message_type == 'sms' %}extra-tracking{% endif %}">
|
|
||||||
{{ 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'
|
|
||||||
)
|
|
||||||
) }}
|
|
||||||
</div>
|
|
||||||
<div class="govuk-grid-column-one-quarter">
|
|
||||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
|
|
||||||
{{ govukButton({
|
|
||||||
"text": "Search",
|
|
||||||
"classes": "search-form__button"
|
|
||||||
}) }}
|
|
||||||
</div>
|
|
||||||
{% endcall %}
|
|
||||||
|
|
||||||
{% call form_wrapper(id="search-form") %}
|
|
||||||
<input type="hidden" name="to" value="{{ search_form.to.data }}">
|
|
||||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
|
|
||||||
{% endcall %}
|
|
||||||
{% else %}
|
|
||||||
{% call form_wrapper(id="search-form") %}
|
|
||||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/>
|
|
||||||
{% endcall %}
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% call form_wrapper(
|
||||||
|
action=url_for('.view_notifications', service_id=current_service.id, message_type=message_type),
|
||||||
|
class="govuk-grid-row"
|
||||||
|
) %}
|
||||||
|
<div class="govuk-grid-column-three-quarters {% if message_type == 'sms' %}extra-tracking{% endif %}">
|
||||||
|
{{ 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'
|
||||||
|
)
|
||||||
|
) }}
|
||||||
|
</div>
|
||||||
|
<div class="govuk-grid-column-one-quarter">
|
||||||
|
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
|
||||||
|
{{ govukButton({
|
||||||
|
"text": "Search",
|
||||||
|
"classes": "search-form__button"
|
||||||
|
}) }}
|
||||||
|
</div>
|
||||||
|
{% endcall %}
|
||||||
|
|
||||||
|
{% call form_wrapper(id="search-form") %}
|
||||||
|
<input type="hidden" name="to" value="{{ search_form.to.data }}">
|
||||||
|
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
|
||||||
|
{% endcall %}
|
||||||
|
|
||||||
{% if current_user.has_permissions('view_activity') %}
|
{% if current_user.has_permissions('view_activity') %}
|
||||||
<p class="bottom-gutter">
|
<p class="bottom-gutter">
|
||||||
<a href="{{ download_link }}" download="download" class="govuk-link govuk-link--no-visited-state govuk-!-font-weight-bold">Download this report</a>
|
<a href="{{ download_link }}" download="download" class="govuk-link govuk-link--no-visited-state govuk-!-font-weight-bold">Download this report</a>
|
||||||
|
|||||||
@@ -362,7 +362,7 @@ def test_shows_message_when_no_notifications(
|
|||||||
(
|
(
|
||||||
{},
|
{},
|
||||||
{},
|
{},
|
||||||
'Search by email address or phone number',
|
'Search by recipient',
|
||||||
'',
|
'',
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
@@ -395,6 +395,16 @@ def test_shows_message_when_no_notifications(
|
|||||||
'Search by email address',
|
'Search by email address',
|
||||||
'test@example.com',
|
'test@example.com',
|
||||||
),
|
),
|
||||||
|
(
|
||||||
|
{
|
||||||
|
'message_type': 'letter',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'to': 'Firstname Lastname',
|
||||||
|
},
|
||||||
|
'Search by first line of address or file name',
|
||||||
|
'Firstname Lastname',
|
||||||
|
),
|
||||||
])
|
])
|
||||||
def test_search_recipient_form(
|
def test_search_recipient_form(
|
||||||
client_request,
|
client_request,
|
||||||
@@ -435,9 +445,10 @@ def test_search_recipient_form(
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('message_type, expected_search_box_label', [
|
@pytest.mark.parametrize('message_type, expected_search_box_label', [
|
||||||
(None, 'Search by email address, phone number or reference'),
|
(None, 'Search by recipient or reference'),
|
||||||
('sms', 'Search by phone number or reference'),
|
('sms', 'Search by phone number or reference'),
|
||||||
('email', 'Search by email address or reference'),
|
('email', 'Search by email address or reference'),
|
||||||
|
('letter', 'Search by first line of address, file name or reference'),
|
||||||
])
|
])
|
||||||
def test_api_users_are_told_they_can_search_by_reference_when_service_has_api_keys(
|
def test_api_users_are_told_they_can_search_by_reference_when_service_has_api_keys(
|
||||||
client_request,
|
client_request,
|
||||||
@@ -459,9 +470,10 @@ def test_api_users_are_told_they_can_search_by_reference_when_service_has_api_ke
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('message_type, expected_search_box_label', [
|
@pytest.mark.parametrize('message_type, expected_search_box_label', [
|
||||||
(None, 'Search by email address or phone number'),
|
(None, 'Search by recipient'),
|
||||||
('sms', 'Search by phone number'),
|
('sms', 'Search by phone number'),
|
||||||
('email', 'Search by email address'),
|
('email', 'Search by email address'),
|
||||||
|
('letter', 'Search by first line of address or file name'),
|
||||||
])
|
])
|
||||||
def test_api_users_are_not_told_they_can_search_by_reference_when_service_has_no_api_keys(
|
def test_api_users_are_not_told_they_can_search_by_reference_when_service_has_no_api_keys(
|
||||||
client_request,
|
client_request,
|
||||||
@@ -634,13 +646,13 @@ def test_redacts_templates_that_should_be_redacted(
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
"message_type, tablist_visible, search_bar_visible", [
|
"message_type, tablist_visible", [
|
||||||
('email', True, True),
|
('email', True),
|
||||||
('sms', True, True),
|
('sms', True),
|
||||||
('letter', False, False)
|
('letter', False)
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
def test_big_numbers_and_search_dont_show_for_letters(
|
def test_big_numbers_dont_show_for_letters(
|
||||||
client_request,
|
client_request,
|
||||||
service_one,
|
service_one,
|
||||||
mock_get_notifications,
|
mock_get_notifications,
|
||||||
@@ -650,7 +662,6 @@ def test_big_numbers_and_search_dont_show_for_letters(
|
|||||||
mock_get_no_api_keys,
|
mock_get_no_api_keys,
|
||||||
message_type,
|
message_type,
|
||||||
tablist_visible,
|
tablist_visible,
|
||||||
search_bar_visible
|
|
||||||
):
|
):
|
||||||
page = client_request.get(
|
page = client_request.get(
|
||||||
'main.view_notifications',
|
'main.view_notifications',
|
||||||
@@ -661,7 +672,7 @@ def test_big_numbers_and_search_dont_show_for_letters(
|
|||||||
)
|
)
|
||||||
|
|
||||||
assert (len(page.select("[role=tablist]")) > 0) == tablist_visible
|
assert (len(page.select("[role=tablist]")) > 0) == tablist_visible
|
||||||
assert (len(page.select("[type=search]")) > 0) == search_bar_visible
|
assert (len(page.select("[type=search]")) > 0) is True
|
||||||
|
|
||||||
|
|
||||||
@freeze_time("2017-09-27 16:30:00.000000")
|
@freeze_time("2017-09-27 16:30:00.000000")
|
||||||
|
|||||||
Reference in New Issue
Block a user