Prefer cap_event to reference when referring to an alert

`reference` isn’t very human-friendly – the Environment Agency just
supply a UUID in this field.

The Environment Agency also populate the `<event>`` field with some
human readable text, for example:

> 013 Issue Severe Flood Warning EA

(013 is an ‘area code’ which will be meaningful to the Flood Warning Service team)

This commit changes the frontend to display the value of the `cap_event`
field, if it’s present, which is where the API stores the value of the
`<event>` field from the original CAP XML.

***

Depends on:
- [x] https://github.com/alphagov/notifications-api/pull/3344/files
This commit is contained in:
Chris Hill-Scott
2021-10-20 18:13:39 +01:00
parent 673d6debbe
commit 1334538cad
3 changed files with 33 additions and 7 deletions

View File

@@ -162,7 +162,7 @@ class BroadcastMessage(JSONModel):
def reference(self):
if self.template_id:
return self._dict['template_name']
return self._dict['reference']
return self._dict['cap_event'] or self._dict['reference']
@property
def template(self):

View File

@@ -684,6 +684,7 @@ def broadcast_message_json(
simple_polygons=None,
content=None,
reference=None,
cap_event=None,
template_name='Example template',
):
return {
@@ -696,6 +697,7 @@ def broadcast_message_json(
'template_name': template_name,
'content': content or 'This is a test',
'reference': reference,
'cap_event': cap_event,
'personalisation': {},
'areas': areas or {

View File

@@ -1811,12 +1811,19 @@ def test_view_broadcast_message_shows_correct_highlighted_navigation(
)
@pytest.mark.parametrize('extra_broadcast_json_fields', (
# These should be ignored for broadcasts with a template
{'reference': 'foo'},
{'cap_event': 'bar'},
{},
))
def test_view_pending_broadcast(
mocker,
client_request,
service_one,
fake_uuid,
active_user_approve_broadcasts_permission,
extra_broadcast_json_fields,
):
broadcast_creator = create_active_user_create_broadcasts_permissions(with_unique_id=True)
mocker.patch(
@@ -1828,6 +1835,7 @@ def test_view_pending_broadcast(
created_by_id=broadcast_creator['id'],
finishes_at=None,
status='pending-approval',
**extra_broadcast_json_fields
),
)
client_request.login(active_user_approve_broadcasts_permission)
@@ -1866,12 +1874,31 @@ def test_view_pending_broadcast(
)
@pytest.mark.parametrize('extra_broadcast_json_fields, expected_banner_text', (
({'reference': 'No template test'}, (
'Test User Create Broadcasts Permission wants to broadcast No template test '
'No phones will get this alert. '
'Start broadcasting now Reject this alert'
)),
({'cap_event': 'No template test'}, (
'Test User Create Broadcasts Permission wants to broadcast No template test '
'No phones will get this alert. '
'Start broadcasting now Reject this alert'
)),
({'cap_event': 'EVENT', 'reference': 'REFERENCE'}, (
'Test User Create Broadcasts Permission wants to broadcast EVENT '
'No phones will get this alert. '
'Start broadcasting now Reject this alert'
)),
))
def test_view_pending_broadcast_without_template(
mocker,
client_request,
service_one,
fake_uuid,
active_user_approve_broadcasts_permission,
extra_broadcast_json_fields,
expected_banner_text,
):
broadcast_creator = create_active_user_create_broadcasts_permissions(with_unique_id=True)
mocker.patch(
@@ -1883,8 +1910,8 @@ def test_view_pending_broadcast_without_template(
created_by_id=broadcast_creator['id'],
finishes_at=None,
status='pending-approval',
reference='No template test',
content='Uh-oh',
**extra_broadcast_json_fields,
),
)
client_request.login(active_user_approve_broadcasts_permission)
@@ -1902,11 +1929,8 @@ def test_view_pending_broadcast_without_template(
assert (
normalize_spaces(page.select_one('.banner').text)
) == (
'Test User Create Broadcasts Permission wants to broadcast No template test '
'No phones will get this alert. '
'Start broadcasting now Reject this alert'
)
) == expected_banner_text
assert (
normalize_spaces(page.select_one('.broadcast-message-wrapper').text)
) == (