Merge pull request #1259 from alphagov/letters-are-a-thing

Tell users that letters are coming
This commit is contained in:
Chris Hill-Scott
2017-05-05 14:10:34 +01:00
committed by GitHub
4 changed files with 89 additions and 2 deletions

View File

@@ -286,6 +286,15 @@ def service_set_international_sms(service_id):
) )
@main.route("/services/<service_id>/service-settings/set-letters", methods=['GET'])
@login_required
@user_has_permissions('manage_settings', admin_override=True)
def service_set_letters(service_id):
return render_template(
'views/service-settings/set-letters.html',
)
@main.route("/services/<service_id>/service-settings/set-letter-contact-block", methods=['GET', 'POST']) @main.route("/services/<service_id>/service-settings/set-letter-contact-block", methods=['GET', 'POST'])
@login_required @login_required
@user_has_permissions('manage_settings', admin_override=True) @user_has_permissions('manage_settings', admin_override=True)

View File

@@ -39,12 +39,19 @@
{{ text_field(current_service.sms_sender or '40604') }} {{ text_field(current_service.sms_sender or '40604') }}
{{ edit_field('Change', url_for('.service_set_sms_sender', service_id=current_service.id)) }} {{ edit_field('Change', url_for('.service_set_sms_sender', service_id=current_service.id)) }}
{% endcall %} {% endcall %}
{% call row() %} {% call row() %}
{{ text_field('International text messages') }} {{ text_field('International text messages') }}
{{ text_field('On' if current_service.can_send_international_sms else 'Off') }} {{ text_field('On' if current_service.can_send_international_sms else 'Off') }}
{{ edit_field('Change', url_for('.service_set_international_sms', service_id=current_service.id)) }} {{ edit_field('Change', url_for('.service_set_international_sms', service_id=current_service.id)) }}
{% endcall %} {% endcall %}
{% call row() %}
{{ text_field('Letters') }}
{{ text_field('On' if current_service.can_send_letters else 'Off') }}
{{ edit_field('Change', url_for('.service_set_letters', service_id=current_service.id)) }}
{% endcall %}
{% if current_service.can_send_letters %} {% if current_service.can_send_letters %}
{% call row() %} {% call row() %}
{{ text_field('Letter contact details') }} {{ text_field('Letter contact details') }}

View File

@@ -0,0 +1,38 @@
{% extends "withnav_template.html" %}
{% from "components/textbox.html" import textbox %}
{% from "components/page-footer.html" import page_footer %}
{% block service_page_title %}
Text message sender
{% endblock %}
{% block maincolumn_content %}
<div class="grid-row">
<div class="column-five-sixths">
<h1 class="heading-large">Letters</h1>
{% if current_service.can_send_letters %}
<p>
Your service can send letters.
</p>
<p>
If you want to stop your sending from sending letters,
<a href="{{ url_for('.support') }}">get in touch with the GOV.UK Notify team</a>.
</p>
{% else %}
<p>
Using GOV.UK Notify to send letters is an invitation&#8209;only feature.
</p>
<p>
If you want to try it out,
<a href="{{ url_for('.support') }}">get in touch with the GOV.UK Notify team</a>.
</p>
{% endif %}
{{ page_footer(
back_link=url_for('.service_settings', service_id=current_service.id),
back_link_text='Back to settings'
) }}
</div>
</div>
{% endblock %}

View File

@@ -9,6 +9,7 @@ from werkzeug.exceptions import InternalServerError
import app import app
from app.utils import email_safe from app.utils import email_safe
from tests import validate_route_permission, service_json from tests import validate_route_permission, service_json
from tests.app.test_utils import normalize_spaces
from tests.conftest import active_user_with_permissions, platform_admin_user from tests.conftest import active_user_with_permissions, platform_admin_user
@@ -20,6 +21,7 @@ from tests.conftest import active_user_with_permissions, platform_admin_user
'Email reply to address None Change', 'Email reply to address None Change',
'Text message sender 40604 Change', 'Text message sender 40604 Change',
'International text messages Off Change', 'International text messages Off Change',
'Letters Off Change',
]), ]),
(platform_admin_user, [ (platform_admin_user, [
'Label Value Action', 'Label Value Action',
@@ -27,6 +29,7 @@ from tests.conftest import active_user_with_permissions, platform_admin_user
'Email reply to address None Change', 'Email reply to address None Change',
'Text message sender 40604 Change', 'Text message sender 40604 Change',
'International text messages Off Change', 'International text messages Off Change',
'Letters Off Change',
'Label Value Action', 'Label Value Action',
'Email branding GOV.UK Change', 'Email branding GOV.UK Change',
'Letter branding HM Government Change', 'Letter branding HM Government Change',
@@ -73,6 +76,7 @@ def test_should_show_overview_for_service_with_more_things_set(
'Email reply to address test@example.com Change', 'Email reply to address test@example.com Change',
'Text message sender elevenchars Change', 'Text message sender elevenchars Change',
'International text messages Off Change', 'International text messages Off Change',
'Letters Off Change',
]): ]):
assert row == " ".join(page.find_all('tr')[index + 1].text.split()) assert row == " ".join(page.find_all('tr')[index + 1].text.split())
@@ -100,7 +104,7 @@ def test_letter_contact_block_shows_none_if_not_set(
)) ))
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
div = page.find_all('tr')[5].find_all('td')[1].div div = page.find_all('tr')[6].find_all('td')[1].div
assert div.text.strip() == 'None' assert div.text.strip() == 'None'
assert 'default' in div.attrs['class'][0] assert 'default' in div.attrs['class'][0]
@@ -118,7 +122,7 @@ def test_escapes_letter_contact_block(
)) ))
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
div = str(page.find_all('tr')[5].find_all('td')[1].div) div = str(page.find_all('tr')[6].find_all('td')[1].div)
assert 'foo<br>bar' in div assert 'foo<br>bar' in div
assert '<script>' not in div assert '<script>' not in div
@@ -1015,3 +1019,32 @@ def test_cant_resume_active_service(
assert response.status_code == 200 assert response.status_code == 200
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
assert 'Resume service' not in {a.text for a in page.find_all('a', class_='button')} assert 'Resume service' not in {a.text for a in page.find_all('a', class_='button')}
@pytest.mark.parametrize('endpoint, expected_p', [
(
'main.service_set_international_sms',
(
'Sending text messages to international phone numbers is '
'an invitationonly feature.'
)
),
(
'main.service_set_letters',
(
'Using GOV.UK Notify to send letters is an invitationonly '
'feature.'
)
),
])
def test_invitation_pages(
logged_in_client,
service_one,
endpoint,
expected_p,
):
response = logged_in_client.get(url_for(endpoint, service_id=service_one['id']))
assert response.status_code == 200
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
assert normalize_spaces(page.select('main p')[0].text) == expected_p