Add service-specific versions of agreement page

Our usability testing found that jumping out of the service when going
to download the agreement made it difficult for people to find their way
back to the ‘Request to go live’ page.

This commit adds a duplicate, service-specific versions of these pages
which have the same content but:
- keep the service navigation
- have a link back to the ‘Request to go live’ page
This commit is contained in:
Chris Hill-Scott
2019-05-01 08:29:32 +01:00
parent 734666ee53
commit 35bf42b024
6 changed files with 107 additions and 3 deletions

View File

@@ -16,6 +16,15 @@ def agreement():
)
@main.route('/service/<uuid:service_id>/agreement')
@login_required
def service_agreement(service_id):
return render_template(
'views/agreement/service-{}.html'.format(current_user.default_organisation.as_jinja_template),
owner=current_user.default_organisation.name,
)
@main.route('/agreement.pdf')
@login_required
def download_agreement():

View File

@@ -234,6 +234,7 @@ class HeaderNavigation(Navigation):
'service_add_email_reply_to',
'service_add_letter_contact',
'service_add_sms_sender',
'service_agreement',
'service_confirm_delete_email_reply_to',
'service_confirm_delete_sms_sender',
'service_dashboard',
@@ -365,6 +366,7 @@ class MainNavigation(Navigation):
'service_add_email_reply_to',
'service_add_letter_contact',
'service_add_sms_sender',
'service_agreement',
'service_confirm_delete_email_reply_to',
'service_confirm_delete_sms_sender',
'service_edit_email_reply_to',
@@ -735,6 +737,7 @@ class CaseworkNavigation(Navigation):
'service_add_email_reply_to',
'service_add_letter_contact',
'service_add_sms_sender',
'service_agreement',
'service_confirm_delete_email_reply_to',
'service_confirm_delete_sms_sender',
'service_dashboard',
@@ -991,6 +994,7 @@ class OrgNavigation(Navigation):
'service_add_email_reply_to',
'service_add_letter_contact',
'service_add_sms_sender',
'service_agreement',
'service_confirm_delete_email_reply_to',
'service_confirm_delete_sms_sender',
'service_dashboard',

View File

@@ -0,0 +1,23 @@
{% extends "withnav_template.html" %}
{% from "components/page-header.html" import page_header %}
{% block service_page_title %}
GOV.UK Notify data sharing and financial agreement
{% endblock %}
{% block maincolumn_content %}
<div class="grid-row">
<div class="column-five-sixths">
{{ page_header(
'GOV.UK Notify data sharing and financial agreement',
back_link=url_for('main.request_to_go_live', service_id=current_service.id)
)}}
{% include 'views/agreement/_agreement-choose.html'%}
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,23 @@
{% extends "withnav_template.html" %}
{% from "components/page-header.html" import page_header %}
{% block service_page_title %}
GOV.UK Notify data sharing and financial agreement
{% endblock %}
{% block maincolumn_content %}
<div class="grid-row">
<div class="column-five-sixths">
{{ page_header(
'GOV.UK Notify data sharing and financial agreement',
back_link=url_for('main.request_to_go_live', service_id=current_service.id)
)}}
{% include 'views/agreement/_agreement-signed.html' %}
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,23 @@
{% extends "withnav_template.html" %}
{% from "components/page-header.html" import page_header %}
{% block service_page_title %}
GOV.UK Notify data sharing and financial agreement
{% endblock %}
{% block maincolumn_content %}
<div class="grid-row">
<div class="column-five-sixths">
{{ page_header(
'GOV.UK Notify data sharing and financial agreement',
back_link=url_for('main.request_to_go_live', service_id=current_service.id)
)}}
{% include 'views/agreement/_agreement.html'%}
</div>
</div>
{% endblock %}

View File

@@ -4,7 +4,7 @@ from io import BytesIO
import pytest
from flask import url_for
from tests.conftest import mock_get_organisation_by_domain
from tests.conftest import SERVICE_ONE_ID, mock_get_organisation_by_domain
class _MockS3Object():
@@ -16,6 +16,22 @@ class _MockS3Object():
return {'Body': BytesIO(self.data)}
@pytest.mark.parametrize('endpoint, extra_args, link_selector, expected_back_links', [
(
'main.agreement',
{},
'main .column-two-thirds a',
[]
),
(
'main.service_agreement',
{'service_id': SERVICE_ONE_ID},
'main .column-five-sixths a',
[
partial(url_for, 'main.request_to_go_live', service_id=SERVICE_ONE_ID)
]
),
])
@pytest.mark.parametrize('agreement_signed, crown, expected_links', [
(
True, True,
@@ -44,17 +60,23 @@ def test_show_agreement_page(
client_request,
mocker,
fake_uuid,
mock_has_jobs,
agreement_signed,
crown,
expected_links,
endpoint,
extra_args,
link_selector,
expected_back_links,
):
mock_get_organisation_by_domain(
mocker,
crown=crown,
agreement_signed=agreement_signed,
)
page = client_request.get('main.agreement')
links = page.select('main .column-two-thirds a')
expected_links = expected_back_links + expected_links
page = client_request.get(endpoint, **extra_args)
links = page.select(link_selector)
assert len(links) == len(expected_links)
for index, link in enumerate(links):
assert link['href'] == expected_links[index]()