diff --git a/app/main/views/jobs.py b/app/main/views/jobs.py
index b541ffa32..e78375f07 100644
--- a/app/main/views/jobs.py
+++ b/app/main/views/jobs.py
@@ -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, {
diff --git a/app/templates/views/notifications.html b/app/templates/views/notifications.html
index 2717be8d0..bcc6a1aeb 100644
--- a/app/templates/views/notifications.html
+++ b/app/templates/views/notifications.html
@@ -11,36 +11,32 @@
{% block maincolumn_content %}
-
- {%- 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 -%}
diff --git a/tests/app/main/views/test_jobs.py b/tests/app/main/views/test_jobs.py
index 68773880d..09c2f5fdf 100644
--- a/tests/app/main/views/test_jobs.py
+++ b/tests/app/main/views/test_jobs.py
@@ -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,