Make terms page smarter about the agreement

People are emailing us asking if their organisation has signed the
agreement. In some cases they have, so this is a waste of their and
our time.

This commit adds a bit of logic to the terms of use page to tell users
when their organisation has already signed the agreement.
This commit is contained in:
Chris Hill-Scott
2018-03-08 12:12:18 +00:00
parent 1a4adfafa0
commit 6c47375d9f
3 changed files with 61 additions and 4 deletions

View File

@@ -9,6 +9,7 @@ from app import convert_to_boolean
from app.main import main
from app.main.forms import SearchTemplatesForm
from app.main.views.sub_navigation_dictionaries import features_nav
from app.utils import GovernmentDomain
@main.route('/')
@@ -152,7 +153,8 @@ def security():
def terms():
return render_template(
'views/terms-of-use.html',
navigation_links=features_nav()
navigation_links=features_nav(),
agreement_info=GovernmentDomain.from_current_user(),
)

View File

@@ -15,9 +15,18 @@ Terms of use
<div class="column-two-thirds">
<h1 class="heading-large">Terms of use</h1>
<p>To go live on GOV.UK Notify, you must accept our data sharing and financial agreement.</p>
<p><a href="{{url_for('.feedback', ticket_type='ask-question-give-feedback')}}">Contact us</a> to get a copy of the agreement or find out if your organisation has already accepted it.</p>
<p>To accept these terms of use, you must be the service manager for your service.</p>
<p>By using GOV.UK Notify, you agree to follow our terms of use.</p>
<p>The service manager for your service has to accept the terms of use when you request to go live on Notify.</p>
<h2 class="heading-medium">Data sharing and financial agreement</h2>
{% if agreement_info.agreement_signed %}
<p>Your organisation ({{ agreement_info.owner }}) has already accepted the GOV.UK&nbsp;Notify data sharing and financial agreement.</p>
{% else %}
<p>For your service to go live on Notify, your organisation must accept our data sharing and financial agreement.</p>
<p><a href="{{url_for('.feedback', ticket_type='ask-question-give-feedback')}}">Contact us</a> to get a copy of the agreement or find out if your organisation has already accepted it.</p>
{% endif %}
<h2 class="heading-medium">Notifys side of the agreement</h2>
<p>We agree to:</p>

View File

@@ -1,6 +1,7 @@
import pytest
from bs4 import BeautifulSoup
from flask import url_for
from tests.conftest import active_user_with_permissions, normalize_spaces
def test_non_logged_in_user_can_see_homepage(
@@ -86,3 +87,48 @@ def test_old_static_pages_redirect(
'main.{}'.format(expected_view),
_external=True
)
def test_terms_is_generic_if_user_is_not_logged_in(
client
):
response = client.get(url_for('main.terms'))
assert response.status_code == 200
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
assert normalize_spaces(page.select('main p')[2].text) == (
'For your service to go live on Notify, your organisation must accept our data sharing and financial agreement.'
)
assert normalize_spaces(page.select('main p')[3].text) == (
'Contact us to get a copy of the agreement or find out if your organisation has already accepted it.'
)
@pytest.mark.parametrize('email_address, expected_first_paragraph', [
(
'test@cabinet-office.gov.uk',
(
'Your organisation (Cabinet Office) has already accepted '
'the GOV.UK Notify data sharing and financial agreement.'
),
),
(
'larry@downing-street.gov.uk',
(
'For your service to go live on Notify, your organisation '
'must accept our data sharing and financial agreement.'
),
),
])
def test_terms_tells_logged_in_users_what_we_know_about_their_agreement(
mocker,
fake_uuid,
client_request,
email_address,
expected_first_paragraph,
):
user = active_user_with_permissions(fake_uuid)
user.email_address = email_address
mocker.patch('app.user_api_client.get_user', return_value=user)
page = client_request.get('main.terms')
assert normalize_spaces(page.select('main p')[2].text) == expected_first_paragraph