diff --git a/app/__init__.py b/app/__init__.py
index 8aa82abb7..561b322f8 100644
--- a/app/__init__.py
+++ b/app/__init__.py
@@ -409,7 +409,7 @@ def valid_phone_number(phone_number):
def format_notification_type(notification_type):
return {
'email': 'Email',
- 'sms': 'SMS',
+ 'sms': 'Text message',
'letter': 'Letter'
}[notification_type]
diff --git a/app/models/broadcast_message.py b/app/models/broadcast_message.py
index 27106be8e..372aec925 100644
--- a/app/models/broadcast_message.py
+++ b/app/models/broadcast_message.py
@@ -76,12 +76,6 @@ class BroadcastMessage(JSONModel):
for parent in area.parents:
yield parent
- @property
- def initial_area_names(self):
- return [
- area.name for area in self.areas
- ][:10]
-
@cached_property
def polygons(self):
return Polygons(
diff --git a/app/models/template_list.py b/app/models/template_list.py
index def776b08..144a4675a 100644
--- a/app/models/template_list.py
+++ b/app/models/template_list.py
@@ -1,3 +1,6 @@
+from app import format_notification_type
+
+
class TemplateList():
def __init__(
@@ -128,12 +131,17 @@ class TemplateListTemplate(TemplateListItem):
):
super().__init__(template, ancestors)
self.service_id = service_id
- self.hint = {
- 'email': 'Email template',
- 'sms': 'Text message template',
- 'letter': 'Letter template',
- 'broadcast': 'Broadcast template',
- }.get(template['template_type'])
+ self.template_type = template['template_type']
+ self.content = template.get('content')
+
+ @property
+ def hint(self):
+ if self.template_type == 'broadcast':
+ max_length_in_chars = 40
+ if len(self.content) > (max_length_in_chars + 2):
+ return self.content[:max_length_in_chars].strip() + '…'
+ return self.content
+ return format_notification_type(self.template_type) + ' template'
class TemplateListFolder(TemplateListItem):
diff --git a/app/templates/views/broadcast/partials/dashboard-table.html b/app/templates/views/broadcast/partials/dashboard-table.html
index ea4bbb586..1e1e559f1 100644
--- a/app/templates/views/broadcast/partials/dashboard-table.html
+++ b/app/templates/views/broadcast/partials/dashboard-table.html
@@ -15,9 +15,14 @@
{% call row_heading() %}
{{ item.template_name }}
-
- To {{ item.initial_area_names|formatted_list(before_each='', after_each='') }}
+
+ {{ item.content }}
+
+ {% for area in item.areas %}
+ - {{ area.name }}
+ {% endfor %}
+
{% endcall %}
{% call field(align='right') %}
diff --git a/tests/app/main/views/test_broadcast.py b/tests/app/main/views/test_broadcast.py
index 141c9f85f..be55d22bf 100644
--- a/tests/app/main/views/test_broadcast.py
+++ b/tests/app/main/views/test_broadcast.py
@@ -302,7 +302,7 @@ def test_broadcast_dashboard(
assert [
normalize_spaces(row.text) for row in page.select('table')[0].select('tbody tr')
] == [
- 'Example template To England and Scotland Live until tomorrow at 2:20am',
+ 'Example template This is a test England Scotland Live until tomorrow at 2:20am',
]
assert normalize_spaces(page.select('main h2')[1].text) == (
@@ -311,7 +311,7 @@ def test_broadcast_dashboard(
assert [
normalize_spaces(row.text) for row in page.select('table')[1].select('tbody tr')
] == [
- 'Example template To England and Scotland Prepared by Test User',
+ 'Example template This is a test England Scotland Prepared by Test User',
]
@@ -361,8 +361,8 @@ def test_previous_broadcasts_page(
assert [
normalize_spaces(row.text) for row in page.select('table')[0].select('tbody tr')
] == [
- 'Example template To England and Scotland Stopped 10 February at 2:20am',
- 'Example template To England and Scotland Finished yesterday at 8:20pm',
+ 'Example template This is a test England Scotland Stopped 10 February at 2:20am',
+ 'Example template This is a test England Scotland Finished yesterday at 8:20pm',
]
diff --git a/tests/app/main/views/test_templates.py b/tests/app/main/views/test_templates.py
index 8dc5daeb1..e6cf72527 100644
--- a/tests/app/main/views/test_templates.py
+++ b/tests/app/main/views/test_templates.py
@@ -199,6 +199,75 @@ def test_should_show_page_for_choosing_a_template(
mock_get_template_folders.assert_called_once_with(SERVICE_ONE_ID)
+def test_should_show_page_of_broadcast_templates(
+ mocker,
+ client_request,
+ service_one,
+ fake_uuid,
+ mock_get_template_folders,
+):
+ service_one['permissions'] += ['broadcast']
+ mocker.patch(
+ 'app.service_api_client.get_service_templates',
+ return_value={'data': [
+ template_json(
+ SERVICE_ONE_ID,
+ fake_uuid,
+ type_='broadcast',
+ name='A',
+ content='a' * 40,
+ ),
+ template_json(
+ SERVICE_ONE_ID,
+ fake_uuid,
+ type_='broadcast',
+ name='B',
+ content='b' * 42,
+ ),
+ template_json(
+ SERVICE_ONE_ID,
+ fake_uuid,
+ type_='broadcast',
+ name='C',
+ content='c' * 43,
+ ),
+ template_json(
+ SERVICE_ONE_ID,
+ fake_uuid,
+ type_='broadcast',
+ name='D',
+ # This should be truncated at 40 chars, then have the
+ # trailing space stripped
+ content=('d' * 39) + ' ' + ('d' * 40),
+ ),
+ ]}
+ )
+ page = client_request.get(
+ 'main.choose_template',
+ service_id=SERVICE_ONE_ID,
+ )
+ assert [
+ (
+ normalize_spaces(template.select_one('.govuk-link').text),
+ normalize_spaces(template.select_one('.govuk-hint').text),
+ )
+ for template in page.select('.template-list-item')
+ ] == [
+ (
+ 'A', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
+ ),
+ (
+ 'B', 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
+ ),
+ (
+ 'C', 'cccccccccccccccccccccccccccccccccccccccc…',
+ ),
+ (
+ 'D', 'ddddddddddddddddddddddddddddddddddddddd…',
+ ),
+ ]
+
+
def test_choose_template_can_pass_through_an_initial_state_to_templates_and_folders_selection_form(
client_request,
mock_get_template_folders,