diff --git a/app/main/views/notifications.py b/app/main/views/notifications.py index 5779db9b5..70978931d 100644 --- a/app/main/views/notifications.py +++ b/app/main/views/notifications.py @@ -19,6 +19,7 @@ from app.utils import ( get_help_argument, get_template, get_time_left, + get_letter_timings, REQUESTED_STATUSES, FAILURE_STATUSES, SENDING_STATUSES, @@ -63,6 +64,7 @@ def view_notification(service_id, notification_id): job = job_api_client.get_job(service_id, notification['job']['id'])['data'] else: job = None + return render_template( 'views/notifications/notification.html', finished=(notification['status'] in (DELIVERED_STATUSES + FAILURE_STATUSES)), @@ -79,7 +81,8 @@ def view_notification(service_id, notification_id): partials=get_single_notification_partials(notification), created_by=notification.get('created_by'), created_at=notification['created_at'], - help=get_help_argument() + help=get_help_argument(), + estimated_letter_delivery_date=get_letter_timings(notification['created_at']).earliest_delivery, ) diff --git a/app/templates/views/notifications/notification.html b/app/templates/views/notifications/notification.html index f2d4c4ea7..90e6ef54a 100644 --- a/app/templates/views/notifications/notification.html +++ b/app/templates/views/notifications/notification.html @@ -30,8 +30,16 @@ on {{ created_at|format_datetime_short }}

+ {% if template.template_type == 'letter' %} +

+ Estimated delivery date: {{ estimated_letter_delivery_date|string|format_date_short }} +

+ {% endif %} + {{ template|string }} - {{ ajax_block(partials, updates_url, 'status', finished=finished) }} + {% if template.template_type != 'letter' %} + {{ ajax_block(partials, updates_url, 'status', finished=finished) }} + {% endif %} {% endblock %} diff --git a/tests/__init__.py b/tests/__init__.py index ab20273e6..629fedb6d 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -86,7 +86,7 @@ def service_json( def template_json(service_id, id_, name="sample template", - type_="sms", + type_=None, content=None, subject=None, version=1, @@ -97,7 +97,7 @@ def template_json(service_id, template = { 'id': id_, 'name': name, - 'template_type': type_, + 'template_type': type_ or "sms", 'content': content, 'service': service_id, 'version': version, @@ -226,9 +226,10 @@ def notification_json( with_links=False, rows=5, personalisation=None, + template_type=None, ): if template is None: - template = template_json(service_id, str(generate_uuid())) + template = template_json(service_id, str(generate_uuid()), type_=template_type) if sent_at is None: sent_at = str(datetime.utcnow().time()) if created_at is None: diff --git a/tests/app/main/views/test_notifications.py b/tests/app/main/views/test_notifications.py index 996394fda..0233f3117 100644 --- a/tests/app/main/views/test_notifications.py +++ b/tests/app/main/views/test_notifications.py @@ -110,3 +110,27 @@ def test_notification_page_doesnt_link_to_template_in_tour( 'sample template sent by Test User on 1 January at 1:01am' ) assert len(page.select('main p:nth-of-type(1) a')) == 0 + + +@freeze_time("2016-01-01 01:01") +def test_notification_page_shows_status_of_letter_notification( + client_request, + mocker, + fake_uuid, +): + + mock_get_notification(mocker, fake_uuid, template_type='letter') + + page = client_request.get( + 'main.view_notification', + service_id=SERVICE_ONE_ID, + notification_id=fake_uuid, + ) + + assert normalize_spaces(page.select('main p:nth-of-type(1)')[0].text) == ( + 'sample template sent by Test User on 1 January at 1:01am' + ) + assert normalize_spaces(page.select('main p:nth-of-type(2)')[0].text) == ( + 'Estimated delivery date: 6 January' + ) + assert page.select('p.notification-status') == [] diff --git a/tests/conftest.py b/tests/conftest.py index c224ac513..bc5739459 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1679,6 +1679,7 @@ def mock_get_notification( fake_uuid, notification_status='delivered', redact_personalisation=False, + template_type=None, ): def _get_notification( service_id, @@ -1687,7 +1688,8 @@ def mock_get_notification( noti = notification_json( service_id, rows=1, - status=notification_status + status=notification_status, + template_type=template_type, )['notifications'][0] noti['id'] = notification_id @@ -1702,6 +1704,7 @@ def mock_get_notification( '5407f4db-51c7-4150-8758-35412d42186a', content='hello ((name))', redact_personalisation=redact_personalisation, + type_=template_type, ) return noti