Fix page titles on activity page

We were getting some weirdness like ‘Failed both’.

This commit fixes the problem, and adds some tests for the page headings
to make sure they don’t break again.
This commit is contained in:
Chris Hill-Scott
2016-04-29 15:24:48 +01:00
parent 68bc164f91
commit d82569f883
3 changed files with 62 additions and 27 deletions

View File

@@ -116,6 +116,8 @@ def view_notifications(service_id):
filter_args = _parse_filter_args(request.args)
print(filter_args)
notifications = notification_api_client.get_notifications_for_service(
service_id=service_id,
page=page,
@@ -147,8 +149,8 @@ def view_notifications(service_id):
service_id=service_id,
page=page,
page_size=notifications['total'],
template_type=filter_args.getlist('template_type') if 'template_type' in filter_args else None,
status=filter_args.getlist('status')
template_type=filter_args.get('template_type') if 'template_type' in filter_args else ['email', 'sms'],
status=filter_args.get('status')
if 'status' in filter_args else ['delivered', 'failed'],
limit_days=current_app.config['ACTIVITY_STATS_LIMIT_DAYS'])['notifications'])
return csv_content, 200, {

View File

@@ -11,36 +11,32 @@
{% block maincolumn_content %}
<h1 class="heading-large">
{%- if (request_args.get('template_type', '') == '') and (request_args.get('status', 'delivered,failed') == 'delivered,failed') -%}
{%- if (request_args.get('template_type', 'email,sms') == 'email,sms') and (request_args.get('status', 'delivered,failed') == 'delivered,failed') -%}
Activity
{%- else -%}
{% if request_args.get('status') != 'delivered,failed' %}
{% for label, option, _ in status_filters %}
{% if request_args.get('status') == option %}
{{ label }}
{% endif %}
{% endfor %}
{% endif %}
{%- if request_args.get('status') != 'delivered,failed' -%}
{%- for label, option, _ in status_filters -%}
{%- if request_args.get('status', 'delivered,failed') == option -%}{{label}} {% endif -%}
{%- endfor -%}
{%- endif -%}
{% if request_args.get('template_type') == '' %}
emails and text messages
{% else %}
{%- if request_args.get('template_type', 'email,sms') == 'email,sms' %} emails and text messages
{%- else -%}
{% for template_label, template_option, _ in type_filters %}
{% if request_args.get('template_type') == template_option %}
{% if request_args.get('status', 'delivered,failed') == 'delivered,failed' %}
{%- for template_label, template_option, _ in type_filters -%}
{%- if request_args.get('template_type') == template_option -%}
{%- if request_args.get('status', 'delivered,failed') == 'delivered,failed' -%}
{{ template_label }}
{% else %}
{%- else -%}
{{ template_label | lower }}
{% endif %}
{% endif %}
{% endfor %}
{%- endif -%}
{%- endif -%}
{%- endfor -%}
{% endif %}
{%- endif -%}
{%- endif -%}

View File

@@ -107,6 +107,8 @@ def test_should_show_notifications_for_a_service(app_,
assert notification['status'] in content
assert notification['template']['name'] in content
assert '.csv' in content
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
assert page.h1.string.strip() == 'Activity'
mock_get_notifications.assert_called_with(limit_days=7, page=1, service_id=service_one['id'], status=['delivered', 'failed'], template_type=['email', 'sms']) # noqa
@@ -126,7 +128,8 @@ def test_can_view_only_sms_notifications_for_a_service(app_,
response = client.get(url_for(
'main.view_notifications',
service_id=service_one['id'],
template_type=['sms']))
template_type='sms',
status='delivered,failed'))
assert response.status_code == 200
content = response.get_data(as_text=True)
@@ -136,6 +139,8 @@ def test_can_view_only_sms_notifications_for_a_service(app_,
assert notification['status'] in content
assert notification['template']['name'] in content
assert '.csv' in content
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
assert page.h1.string.strip() == 'Text messages'
mock_get_notifications.assert_called_with(limit_days=7, page=1, service_id=service_one['id'], status=['delivered', 'failed'], template_type=['sms']) # noqa
@@ -155,8 +160,8 @@ def test_can_view_only_email_notifications_for_a_service(app_,
response = client.get(url_for(
'main.view_notifications',
service_id=service_one['id'],
status=['delivered', 'failed'],
template_type=['email']))
status='delivered,failed',
template_type='email'))
assert response.status_code == 200
content = response.get_data(as_text=True)
@@ -166,6 +171,8 @@ def test_can_view_only_email_notifications_for_a_service(app_,
assert notification['status'] in content
assert notification['template']['name'] in content
assert '.csv' in content
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
assert page.h1.string.strip() == 'Emails'
mock_get_notifications.assert_called_with(limit_days=7, page=1, service_id=service_one['id'], status=['delivered', 'failed'], template_type=['email']) # noqa
@@ -185,7 +192,7 @@ def test_can_view_successful_notifications_for_a_service(app_,
response = client.get(url_for(
'main.view_notifications',
service_id=service_one['id'],
status=['delivered']))
status='delivered'))
assert response.status_code == 200
content = response.get_data(as_text=True)
notifications = notification_json(service_one['id'])
@@ -194,6 +201,8 @@ def test_can_view_successful_notifications_for_a_service(app_,
assert notification['status'] in content
assert notification['template']['name'] in content
assert '.csv' in content
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
assert page.h1.string.strip() == 'Successful emails and text messages'
mock_get_notifications.assert_called_with(limit_days=7, page=1, service_id=service_one['id'], status=['delivered'], template_type=['email', 'sms']) # noqa
@@ -213,7 +222,7 @@ def test_can_view_failed_notifications_for_a_service(app_,
response = client.get(url_for(
'main.view_notifications',
service_id=service_one['id'],
status=['failed']))
status='failed'))
assert response.status_code == 200
content = response.get_data(as_text=True)
notifications = notification_json(service_one['id'])
@@ -222,10 +231,38 @@ def test_can_view_failed_notifications_for_a_service(app_,
assert notification['status'] in content
assert notification['template']['name'] in content
assert '.csv' in content
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
assert page.h1.string.strip() == 'Failed emails and text messages'
mock_get_notifications.assert_called_with(limit_days=7, page=1, service_id=service_one['id'], status=['failed'], template_type=['email', 'sms']) # noqa
def test_can_view_failed_combination_of_notification_type_and_status(
app_,
service_one,
api_user_active,
mock_login,
mock_get_user,
mock_get_user_by_email,
mock_get_service,
mock_get_notifications,
mock_has_permissions
):
with app_.test_request_context():
with app_.test_client() as client:
client.login(api_user_active)
response = client.get(url_for(
'main.view_notifications',
service_id=service_one['id'],
status='failed',
template_type='sms'))
assert response.status_code == 200
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
assert page.h1.string.strip() == 'Failed text messages'
mock_get_notifications.assert_called_with(limit_days=7, page=1, service_id=service_one['id'], status=['failed'], template_type=['sms']) # noqa
def test_should_show_notifications_for_a_service_with_next_previous(app_,
service_one,
api_user_active,