From 8e080d60798f6066927278ade6478ae3a2db72fc Mon Sep 17 00:00:00 2001 From: Chris Hill-Scott Date: Mon, 8 Jul 2019 09:29:21 +0100 Subject: [PATCH] Go back to template if coming from template MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Most users don’t have multiple contact blocks. So by default it should feel like you’re just editing the one contact block, rather than managing a collection of them. So this page skips the ‘choose’ page when the user doesn’t yet have any contact blocks. --- app/main/views/service_settings.py | 2 +- .../service-settings/letter-contact/add.html | 2 +- tests/app/main/views/test_service_settings.py | 33 +++++++++++++------ 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/app/main/views/service_settings.py b/app/main/views/service_settings.py index 9a50c48df..7561967ac 100644 --- a/app/main/views/service_settings.py +++ b/app/main/views/service_settings.py @@ -713,7 +713,7 @@ def service_add_letter_contact(service_id): ) if request.args.get('from_template'): return redirect( - url_for('.set_template_sender', service_id=service_id, template_id=request.args.get('from_template')) + url_for('.view_template', service_id=service_id, template_id=request.args.get('from_template')) ) return redirect(url_for('.service_letter_contact_details', service_id=service_id)) return render_template( diff --git a/app/templates/views/service-settings/letter-contact/add.html b/app/templates/views/service-settings/letter-contact/add.html index 5795f69e9..6e91ad984 100644 --- a/app/templates/views/service-settings/letter-contact/add.html +++ b/app/templates/views/service-settings/letter-contact/add.html @@ -13,7 +13,7 @@ {{ page_header( 'Add a new address', - back_link=None if request.args.get('from_template') else url_for('.service_letter_contact_details', service_id=current_service.id) + back_link=url_for('main.view_template', template_id=request.args.get('from_template'), service_id=current_service.id) if request.args.get('from_template') else url_for('.service_letter_contact_details', service_id=current_service.id) ) }}
diff --git a/tests/app/main/views/test_service_settings.py b/tests/app/main/views/test_service_settings.py index 917e4d447..fa7660f94 100644 --- a/tests/app/main/views/test_service_settings.py +++ b/tests/app/main/views/test_service_settings.py @@ -2169,26 +2169,39 @@ def test_add_letter_contact_when_coming_from_template( fake_uuid, mock_get_service_letter_template, ): - data = { - 'letter_contact_block': "1 Example Street" - } - - page = client_request.post( + page = client_request.get( 'main.service_add_letter_contact', service_id=SERVICE_ONE_ID, - _data=data, from_template=fake_uuid, - _follow_redirects=True + ) + + assert page.select_one('.govuk-back-link')['href'] == url_for( + 'main.view_template', + service_id=SERVICE_ONE_ID, + template_id=fake_uuid, + ) + + client_request.post( + 'main.service_add_letter_contact', + service_id=SERVICE_ONE_ID, + _data={ + 'letter_contact_block': '1 Example Street', + }, + from_template=fake_uuid, + _expected_redirect=url_for( + 'main.view_template', + service_id=SERVICE_ONE_ID, + template_id=fake_uuid, + _external=True, + ), ) mock_add_letter_contact.assert_called_once_with( SERVICE_ONE_ID, contact_block="1 Example Street", - is_default=True + is_default=True, ) - assert page.find('h1').text == 'Set letter contact block' - @pytest.mark.parametrize('fixture, data, api_default_args', [ (no_sms_senders, {}, True),