Make sure confirmation/danger banners have a H1

This makes errors on all pages have a `<h1>` element, which is important
for accessibility. It means a bit of rewriting the messages, but I think
they’re better for it.
This commit is contained in:
Chris Hill-Scott
2017-07-24 14:50:56 +01:00
parent 40e79c6827
commit befe93ec0b
4 changed files with 53 additions and 47 deletions

View File

@@ -428,22 +428,24 @@ def delete_service_template(service_id, template_id):
last_used_notification = template_statistics_client.get_template_statistics_for_template(
service_id, template['id']
)
message = '{} was last used {} ago'.format(
last_used_notification['template']['name'],
message = 'It was last used {} ago.'.format(
get_human_readable_delta(
parse(last_used_notification['created_at']).replace(tzinfo=None),
datetime.utcnow())
datetime.utcnow()
)
)
except HTTPError as e:
if e.status_code == 404:
message = '{} has never been used'.format(template['name'])
message = 'Its never been used.'.format(template['name'])
else:
raise e
flash('{}. Are you sure you want to delete it?'.format(message), 'delete')
return render_template(
'views/templates/template.html',
template_delete_confirmation_message=(
'Are you sure you want to delete {}?'.format(template['name']),
message,
),
template=get_template(
template,
current_service,

View File

@@ -7,7 +7,7 @@
{% endif %}
>
{% if subhead -%}
{{ subhead }}&ensp;
<h1 class="banner-title">{{ subhead }}</h1>
{%- endif -%}
{{ body }}
{% if delete_button %}

View File

@@ -29,6 +29,20 @@
</div>
{% endif %}
{% if template_delete_confirmation_message %}
<div class="bottom-gutter">
{% call banner_wrapper(type='dangerous', subhead=template_delete_confirmation_message[0]) %}
<p>
{{ template_delete_confirmation_message[1] }}
</p>
<form method='post'>
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
<input type="submit" class="button" name="delete" value="Confirm" />
</form>
{% endcall %}
</div>
{% endif %}
<h1 class="heading-large">{{ template.name }}</h1>
<div class="grid-row">

View File

@@ -679,16 +679,10 @@ def test_should_redirect_when_saving_a_template_email(
def test_should_show_delete_template_page_with_time_block(
logged_in_client,
api_user_active,
mock_login,
mock_get_service,
client_request,
mock_get_service_template,
mock_get_user,
mock_get_user_by_email,
mock_has_permissions,
fake_uuid,
mocker,
fake_uuid
):
with freeze_time('2012-01-01 12:00:00'):
template = template_json('1234', '1234', "Test template", "sms", "Something very interesting")
@@ -698,30 +692,25 @@ def test_should_show_delete_template_page_with_time_block(
return_value=notification)
with freeze_time('2012-01-01 12:10:00'):
service_id = fake_uuid
template_id = fake_uuid
response = logged_in_client.get(url_for(
page = client_request.get(
'.delete_service_template',
service_id=service_id,
template_id=template_id))
content = response.get_data(as_text=True)
assert response.status_code == 200
assert 'Test template was last used 10 minutes ago. Are you sure you want to delete it?' in content
assert 'Are you sure' in content
assert 'Two week reminder' in content
assert 'Template &lt;em&gt;content&lt;/em&gt; with &amp; entity' in content
mock_get_service_template.assert_called_with(service_id, template_id)
service_id=SERVICE_ONE_ID,
template_id=fake_uuid,
_test_page_title=False,
)
assert page.h1.text == 'Are you sure you want to delete Two week reminder?'
assert normalize_spaces(page.select('.banner-dangerous p')[0].text) == (
'It was last used 10 minutes ago.'
)
assert normalize_spaces(page.select('.sms-message-wrapper')[0].text) == (
'service one: Template <em>content</em> with & entity'
)
mock_get_service_template.assert_called_with(SERVICE_ONE_ID, fake_uuid)
def test_should_show_delete_template_page_with_never_used_block(
logged_in_client,
api_user_active,
mock_login,
mock_get_service,
client_request,
mock_get_service_template,
mock_get_user,
mock_get_user_by_email,
mock_has_permissions,
fake_uuid,
mocker,
):
@@ -729,20 +718,20 @@ def test_should_show_delete_template_page_with_never_used_block(
'app.template_statistics_client.get_template_statistics_for_template',
side_effect=HTTPError(response=Mock(status_code=404), message="Default message")
)
service_id = fake_uuid
template_id = fake_uuid
response = logged_in_client.get(url_for(
page = client_request.get(
'.delete_service_template',
service_id=service_id,
template_id=template_id))
content = response.get_data(as_text=True)
assert response.status_code == 200
assert 'Two week reminder has never been used. Are you sure you want to delete it?' in content
assert 'Are you sure' in content
assert 'Two week reminder' in content
assert 'Template &lt;em&gt;content&lt;/em&gt; with &amp; entity' in content
mock_get_service_template.assert_called_with(service_id, template_id)
service_id=SERVICE_ONE_ID,
template_id=fake_uuid,
_test_page_title=False,
)
assert page.h1.text == 'Are you sure you want to delete Two week reminder?'
assert normalize_spaces(page.select('.banner-dangerous p')[0].text) == (
'Its never been used.'
)
assert normalize_spaces(page.select('.sms-message-wrapper')[0].text) == (
'service one: Template <em>content</em> with & entity'
)
mock_get_service_template.assert_called_with(SERVICE_ONE_ID, fake_uuid)
def test_should_redirect_when_deleting_a_template(
@@ -1094,6 +1083,7 @@ def test_should_show_message_before_redacting_template(
'main.redact_template',
service_id=SERVICE_ONE_ID,
template_id=fake_uuid,
_test_page_title=False,
)
assert (