mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-12 18:08:57 -04:00
Merge pull request #2964 from alphagov/different-back-link-from-job
Always go back to previous page from notification
This commit is contained in:
@@ -101,6 +101,22 @@ def view_notification(service_id, notification_id):
|
||||
show_cancel_button = notification['notification_type'] == 'letter' and \
|
||||
letter_can_be_cancelled(notification['status'], notification_created)
|
||||
|
||||
if request.args.get('help') == '0':
|
||||
back_link = None
|
||||
elif request.args.get('from_job'):
|
||||
back_link = url_for(
|
||||
'main.view_job',
|
||||
service_id=current_service.id,
|
||||
job_id=request.args.get('from_job'),
|
||||
)
|
||||
else:
|
||||
back_link = url_for(
|
||||
'main.view_notifications',
|
||||
service_id=current_service.id,
|
||||
message_type=template.template_type,
|
||||
status='sending,delivered,failed',
|
||||
)
|
||||
|
||||
return render_template(
|
||||
'views/notifications/notification.html',
|
||||
finished=(notification['status'] in (DELIVERED_STATUSES + FAILURE_STATUSES)),
|
||||
@@ -133,6 +149,7 @@ def view_notification(service_id, notification_id):
|
||||
sent_with_test_key=(
|
||||
notification.get('key_type') == KEY_TYPE_TEST
|
||||
),
|
||||
back_link=back_link,
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
field_headings_visible=False
|
||||
) %}
|
||||
{% call row_heading() %}
|
||||
<a class="file-list-filename" href="{{ url_for('.view_notification', service_id=current_service.id, notification_id=item.id) }}">{{ item.to }}</a>
|
||||
<a class="file-list-filename" href="{{ url_for('.view_notification', service_id=current_service.id, notification_id=item.id, from_job=job.id) }}">{{ item.to }}</a>
|
||||
<p class="file-list-hint">
|
||||
{{ item.preview_of_content }}
|
||||
</p>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
{{ page_header(
|
||||
message_count_label(1, template.template_type, suffix='') | capitalize,
|
||||
back_link=None if request.args.get('help') == '0' else url_for('main.view_notifications', service_id=current_service.id, message_type=template.template_type)
|
||||
back_link=back_link
|
||||
) }}
|
||||
|
||||
<p>
|
||||
|
||||
@@ -437,7 +437,7 @@ def notification_json(
|
||||
|
||||
data = {
|
||||
'notifications': [{
|
||||
'id': uuid.uuid4(),
|
||||
'id': sample_uuid(),
|
||||
'to': to,
|
||||
'template': template,
|
||||
'job': job_payload,
|
||||
|
||||
@@ -5,6 +5,7 @@ from flask import url_for
|
||||
from freezegun import freeze_time
|
||||
|
||||
from app.main.views.jobs import get_time_left
|
||||
from tests import sample_uuid
|
||||
from tests.conftest import (
|
||||
SERVICE_ONE_ID,
|
||||
active_caseworking_user,
|
||||
@@ -218,6 +219,19 @@ def test_should_show_page_for_one_job(
|
||||
)
|
||||
assert csv_link.text == 'Download this report'
|
||||
assert page.find('span', {'id': 'time-left'}).text == 'Data available for 7 days'
|
||||
|
||||
assert normalize_spaces(page.select_one('tbody tr').text) == normalize_spaces(
|
||||
'07123456789 '
|
||||
'template content '
|
||||
'Delivered 1 January at 11:10am'
|
||||
)
|
||||
assert page.select_one('tbody tr a')['href'] == url_for(
|
||||
'main.view_notification',
|
||||
service_id=SERVICE_ONE_ID,
|
||||
notification_id=sample_uuid(),
|
||||
from_job=fake_uuid,
|
||||
)
|
||||
|
||||
mock_get_notifications.assert_called_with(
|
||||
SERVICE_ONE_ID,
|
||||
fake_uuid,
|
||||
|
||||
@@ -115,6 +115,46 @@ def test_notification_status_page_respects_redaction(
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.parametrize('extra_args, expected_back_link', [
|
||||
(
|
||||
{},
|
||||
partial(url_for, 'main.view_notifications', message_type='sms', status='sending,delivered,failed'),
|
||||
),
|
||||
(
|
||||
{'from_job': 'job_id'},
|
||||
partial(url_for, 'main.view_job', job_id='job_id'),
|
||||
),
|
||||
(
|
||||
{'help': '0'},
|
||||
None,
|
||||
),
|
||||
(
|
||||
{'help': '0', 'from_job': 'job_id'},
|
||||
None,
|
||||
),
|
||||
])
|
||||
def test_notification_status_shows_expected_back_link(
|
||||
client_request,
|
||||
mocker,
|
||||
mock_get_notification,
|
||||
fake_uuid,
|
||||
extra_args,
|
||||
expected_back_link,
|
||||
):
|
||||
page = client_request.get(
|
||||
'main.view_notification',
|
||||
service_id=SERVICE_ONE_ID,
|
||||
notification_id=fake_uuid,
|
||||
**extra_args
|
||||
)
|
||||
back_link = page.select_one('.govuk-back-link')
|
||||
|
||||
if expected_back_link:
|
||||
assert back_link['href'] == expected_back_link(service_id=SERVICE_ONE_ID)
|
||||
else:
|
||||
assert back_link is None
|
||||
|
||||
|
||||
@freeze_time("2012-01-01 01:01")
|
||||
def test_notification_page_doesnt_link_to_template_in_tour(
|
||||
client_request,
|
||||
|
||||
Reference in New Issue
Block a user