diff --git a/app/models/broadcast_message.py b/app/models/broadcast_message.py index 3385ccc08..3339c07ff 100644 --- a/app/models/broadcast_message.py +++ b/app/models/broadcast_message.py @@ -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): diff --git a/tests/__init__.py b/tests/__init__.py index 2dca4e6d3..58e67ec82 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -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 { diff --git a/tests/app/main/views/test_broadcast.py b/tests/app/main/views/test_broadcast.py index 8d83ca66d..239f7630f 100644 --- a/tests/app/main/views/test_broadcast.py +++ b/tests/app/main/views/test_broadcast.py @@ -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) ) == (