From 5ada431da955425ff7a940516447bc9a9672bdb9 Mon Sep 17 00:00:00 2001 From: Katie Smith Date: Tue, 22 Feb 2022 11:37:40 +0000 Subject: [PATCH] NHS and GOV.UK email branding pages now show preview and apply branding The pages you were redirected to if you selected either GOV.UK branding or NHS branding used to give information about the branding and have a button that submitted a Zendesk ticket. Now, we show a preview of the new branding and the button applies it. --- app/main/views/service_settings.py | 12 +- .../branding/email-branding-govuk.html | 23 ++-- .../branding/email-branding-nhs.html | 18 ++- tests/app/main/views/test_service_settings.py | 121 ++++++++---------- 4 files changed, 82 insertions(+), 92 deletions(-) diff --git a/app/main/views/service_settings.py b/app/main/views/service_settings.py index 76183ae3a..4d47e0056 100644 --- a/app/main/views/service_settings.py +++ b/app/main/views/service_settings.py @@ -80,6 +80,8 @@ PLATFORM_ADMIN_SERVICE_PERMISSIONS = OrderedDict([ ('international_letters', {'title': 'Send international letters', 'requires': 'letter'}), ]) +NHS_BRANDING_ID = 'a7dc4e56-660b-4db7-8cff-12c37b12b5ea' + @main.route("/services//service-settings") @user_has_permissions('manage_service', 'manage_api_keys') @@ -1196,9 +1198,9 @@ def email_branding_govuk(service_id): check_branding_allowed_for_service('govuk') if request.method == 'POST': - create_email_branding_zendesk_ticket('govuk') + current_service.update(email_branding=None) - flash('Thanks for your branding request. We’ll get back to you within one working day.', 'default') + flash('You’ve updated your email branding', 'default') return redirect(url_for('.service_settings', service_id=current_service.id)) return render_template('views/service-settings/branding/email-branding-govuk.html') @@ -1224,12 +1226,12 @@ def email_branding_nhs(service_id): check_branding_allowed_for_service('nhs') if request.method == 'POST': - create_email_branding_zendesk_ticket('nhs') + current_service.update(email_branding=NHS_BRANDING_ID) - flash('Thanks for your branding request. We’ll get back to you within one working day.', 'default') + flash('You’ve updated your email branding', 'default') return redirect(url_for('.service_settings', service_id=current_service.id)) - return render_template('views/service-settings/branding/email-branding-nhs.html') + return render_template('views/service-settings/branding/email-branding-nhs.html', nhs_branding_id=NHS_BRANDING_ID) @main.route("/services//service-settings/email-branding/organisation", methods=['GET', 'POST']) diff --git a/app/templates/views/service-settings/branding/email-branding-govuk.html b/app/templates/views/service-settings/branding/email-branding-govuk.html index 3fc667faa..a1f3ada20 100644 --- a/app/templates/views/service-settings/branding/email-branding-govuk.html +++ b/app/templates/views/service-settings/branding/email-branding-govuk.html @@ -5,7 +5,7 @@ {% from "components/page-header.html" import page_header %} {% block service_page_title %} - Before you request new branding + Check your new branding {% endblock %} {% block backLink %} @@ -16,16 +16,17 @@ {% block maincolumn_content %} - {{ page_header('Before you request new branding') }} + {{ page_header('Check your new branding') }} -

Check that your new branding matches the rest of your service.

+

+ Emails from {{ current_service.name }} will look like this. +

-

You can use the GOV.UK logo on your emails if:

-
    -
  • your website looks like GOV.UK
  • -
  • your email links to a website that looks like GOV.UK
  • -
  • people get an email from your service after using GOV.UK
  • -
+ + +

Before you continue

+ +

You can only use GOV.UK branding if people go to GOV.UK to access your service.

You cannot use GOV.UK branding if your organisation is @@ -34,10 +35,8 @@ from government.

-

We’ll email you once your branding’s ready to use, or if we need any more information.

- {% call form_wrapper() %} - {{ page_footer('Request new branding') }} + {{ page_footer('Use this branding') }} {% endcall %} {% endblock %} diff --git a/app/templates/views/service-settings/branding/email-branding-nhs.html b/app/templates/views/service-settings/branding/email-branding-nhs.html index 015dd68a4..9bdcc84c6 100644 --- a/app/templates/views/service-settings/branding/email-branding-nhs.html +++ b/app/templates/views/service-settings/branding/email-branding-nhs.html @@ -5,7 +5,7 @@ {% from "components/page-header.html" import page_header %} {% block service_page_title %} - Before you request new branding + Check your new branding {% endblock %} {% block backLink %} @@ -16,18 +16,24 @@ {% block maincolumn_content %} - {{ page_header('Before you request new branding') }} + {{ page_header('Check your new branding') }}

- Check that your service is allowed to use the NHS identity. + Emails from {{ current_service.name }} will look like this.

-

Your new branding should match the rest of your service.

+ -

We’ll email you once your branding’s ready to use, or if we need any more information.

+

Before you continue

+ +

Make sure you’re allowed to use NHS branding.

+ +

+ If you’re not sure, check the guidance on the NHS website. +

{% call form_wrapper() %} - {{ page_footer('Request new branding') }} + {{ page_footer('Use this branding') }} {% endcall %} {% endblock %} diff --git a/tests/app/main/views/test_service_settings.py b/tests/app/main/views/test_service_settings.py index 4cf9184d9..d9c302b82 100644 --- a/tests/app/main/views/test_service_settings.py +++ b/tests/app/main/views/test_service_settings.py @@ -14,6 +14,7 @@ from notifications_utils.clients.zendesk.zendesk_client import ( ) import app +from app.main.views.service_settings import NHS_BRANDING_ID from tests import ( find_element_by_tag_and_partial_text, invite_json, @@ -5432,24 +5433,19 @@ def test_submit_branding_when_something_else_is_only_option( ) in mock_create_ticket.call_args_list[0][1]['message'] -@pytest.mark.parametrize('endpoint, service_org_type, expected_heading', [ - ('main.email_branding_govuk', 'central', 'Before you request new branding'), - ('main.email_branding_govuk_and_org', 'central', 'Before you request new branding'), - ('main.email_branding_govuk', 'central', 'Before you request new branding'), - ('main.email_branding_nhs', 'nhs_local', 'Before you request new branding'), - ('main.email_branding_organisation', 'central', 'When you request new branding'), +@pytest.mark.parametrize('endpoint, expected_heading', [ + ('main.email_branding_govuk_and_org', 'Before you request new branding'), + ('main.email_branding_organisation', 'When you request new branding'), ]) -def test_get_email_branding_description_pages( +def test_get_email_branding_description_pages_for_org_branding( client_request, mocker, service_one, organisation_one, mock_get_email_branding, endpoint, - service_org_type, expected_heading, ): - organisation_one['organisation_type'] = service_org_type service_one['email_branding'] = sample_uuid() service_one['organisation'] = organisation_one @@ -5466,6 +5462,39 @@ def test_get_email_branding_description_pages( assert normalize_spaces(page.select_one('.page-footer button').text) == 'Request new branding' +@pytest.mark.parametrize('endpoint, service_org_type, branding_preview_id', [ + ('main.email_branding_govuk', 'central', '__NONE__'), + ('main.email_branding_nhs', 'nhs_local', NHS_BRANDING_ID), +]) +def test_get_email_branding_govuk_and_nhs_pages( + client_request, + mocker, + service_one, + organisation_one, + mock_get_email_branding, + endpoint, + service_org_type, + branding_preview_id, +): + organisation_one['organisation_type'] = service_org_type + service_one['email_branding'] = sample_uuid() + service_one['organisation'] = organisation_one + + mocker.patch( + 'app.organisations_client.get_organisation', + return_value=organisation_one, + ) + + page = client_request.get( + endpoint, + service_id=SERVICE_ONE_ID, + ) + assert page.h1.text == 'Check your new branding' + assert 'Emails from service one will look like this' in normalize_spaces(page.text) + assert page.find('iframe')['src'] == url_for('main.email_template', branding_style=branding_preview_id) + assert normalize_spaces(page.select_one('.page-footer button').text) == 'Use this branding' + + def test_get_email_branding_something_else_page(client_request): page = client_request.get( 'main.email_branding_something_else', @@ -5495,7 +5524,7 @@ def test_get_email_branding_description_pages_give_404_if_selected_branding_not_ ) -def test_submit_email_branding_request_from_govuk_description_page( +def test_update_email_branding_from_govuk_preview_page( mocker, client_request, service_one, @@ -5504,6 +5533,7 @@ def test_submit_email_branding_request_from_govuk_description_page( no_reply_to_email_addresses, mock_get_email_branding, single_sms_sender, + mock_update_service, ): mocker.patch( 'app.organisations_client.get_organisation', @@ -5516,42 +5546,18 @@ def test_submit_email_branding_request_from_govuk_description_page( ) service_one['email_branding'] = sample_uuid() - mock_create_ticket = mocker.spy(NotifySupportTicket, '__init__') - mock_send_ticket_to_zendesk = mocker.patch( - 'app.main.views.service_settings.zendesk_client.send_ticket_to_zendesk', - autospec=True, - ) - page = client_request.post( '.email_branding_govuk', service_id=SERVICE_ONE_ID, _follow_redirects=True, ) - mock_create_ticket.assert_called_once_with( - ANY, - message='\n'.join([ - 'Organisation: organisation one', - 'Service: service one', - 'http://localhost/services/596364a0-858e-42c8-9062-a8fe822260eb', - '', - '---', - 'Current branding: Organisation name', - 'Branding requested: GOV.UK\n', - ]), - subject='Email branding request - service one', - ticket_type='question', - user_name='Test User', - user_email='test@user.gov.uk', - org_id=ORGANISATION_ID, - org_type='central', - service_id=SERVICE_ONE_ID - ) - mock_send_ticket_to_zendesk.assert_called_once() - assert normalize_spaces(page.select_one('.banner-default').text) == ( - 'Thanks for your branding request. We’ll get back to you ' - 'within one working day.' + mock_update_service.assert_called_once_with( + SERVICE_ONE_ID, + email_branding=None, ) + assert page.h1.text == 'Settings' + assert normalize_spaces(page.select_one('.banner-default').text) == 'You’ve updated your email branding' def test_submit_email_branding_request_from_govuk_and_org_description_page( @@ -5613,7 +5619,7 @@ def test_submit_email_branding_request_from_govuk_and_org_description_page( ) -def test_submit_email_branding_request_from_nhs_description_page( +def test_update_email_branding_from_nhs_preview_page( mocker, client_request, service_one, @@ -5622,46 +5628,23 @@ def test_submit_email_branding_request_from_nhs_description_page( no_reply_to_email_addresses, mock_get_email_branding, single_sms_sender, + mock_update_service, ): service_one['email_branding'] = sample_uuid() service_one['organisation_type'] = 'nhs_local' - mock_create_ticket = mocker.spy(NotifySupportTicket, '__init__') - mock_send_ticket_to_zendesk = mocker.patch( - 'app.main.views.service_settings.zendesk_client.send_ticket_to_zendesk', - autospec=True, - ) - page = client_request.post( '.email_branding_nhs', service_id=SERVICE_ONE_ID, _follow_redirects=True, ) - mock_create_ticket.assert_called_once_with( - ANY, - message='\n'.join([ - 'Organisation: Can’t tell (domain is user.gov.uk)', - 'Service: service one', - 'http://localhost/services/596364a0-858e-42c8-9062-a8fe822260eb', - '', - '---', - 'Current branding: Organisation name', - 'Branding requested: NHS\n', - ]), - subject='Email branding request - service one', - ticket_type='question', - user_name='Test User', - user_email='test@user.gov.uk', - org_id=None, - org_type='nhs_local', - service_id=SERVICE_ONE_ID - ) - mock_send_ticket_to_zendesk.assert_called_once() - assert normalize_spaces(page.select_one('.banner-default').text) == ( - 'Thanks for your branding request. We’ll get back to you ' - 'within one working day.' + mock_update_service.assert_called_once_with( + SERVICE_ONE_ID, + email_branding=NHS_BRANDING_ID, ) + assert page.h1.text == 'Settings' + assert normalize_spaces(page.select_one('.banner-default').text) == 'You’ve updated your email branding' def test_submit_email_branding_request_from_organisation_description_page(