mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-07-12 09:24:15 -04:00
Merge pull request #3680 from alphagov/show-broadcast-content
Show preview of content for broadcast messages and templates
This commit is contained in:
@@ -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]
|
||||
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -15,9 +15,14 @@
|
||||
{% call row_heading() %}
|
||||
<div class="file-list">
|
||||
<a class="file-list-filename-large govuk-link govuk-link--no-visited-state" href="{{ url_for('.view_broadcast_message', service_id=current_service.id, broadcast_message_id=item.id) }}">{{ item.template_name }}</a>
|
||||
<span class="file-list-hint-large">
|
||||
To {{ item.initial_area_names|formatted_list(before_each='', after_each='') }}
|
||||
<span class="file-list-hint-large govuk-!-margin-bottom-1">
|
||||
{{ item.content }}
|
||||
</span>
|
||||
<ul class="area-list">
|
||||
{% for area in item.areas %}
|
||||
<li class="area-list-item area-list-item--unremoveable">{{ area.name }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
{% endcall %}
|
||||
{% call field(align='right') %}
|
||||
|
||||
@@ -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',
|
||||
]
|
||||
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user