From 09dc85e5bc2d6e8d2333107a9bf1dffcf758dffb Mon Sep 17 00:00:00 2001 From: Leo Hemsted Date: Fri, 16 Jun 2017 12:13:21 +0100 Subject: [PATCH] Clean up code to remove unnecessary paths. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Status code was overcomplex, given how we control the inputs. Now, it expects a single value, rather than a comma separated list, and if you give something it doesn't expect it just returns all. Note, it won't select the correct box - but if you've been manually editing the URL that's your own problem ¯\_(ツ)_/¯ Also, as this page will only ever be shown from the tour (tutorial), it doesn't need some non-help things - such as the download csv button and associated endpoint. --- .../partials/notifications/notifications.html | 8 ------ app/utils.py | 17 ----------- tests/app/main/views/test_notifications.py | 28 +++++++++++++++++++ 3 files changed, 28 insertions(+), 25 deletions(-) create mode 100644 tests/app/main/views/test_notifications.py diff --git a/app/templates/partials/notifications/notifications.html b/app/templates/partials/notifications/notifications.html index 6e2be2049..d982e2a97 100644 --- a/app/templates/partials/notifications/notifications.html +++ b/app/templates/partials/notifications/notifications.html @@ -4,14 +4,6 @@
- {% if not help %} -

- Download this report -   - {{ time_left }} -

- {% endif %} - {% call(item, row_number) list_table( [notification], caption=None, diff --git a/app/utils.py b/app/utils.py index 309427e72..5f6afc925 100644 --- a/app/utils.py +++ b/app/utils.py @@ -155,23 +155,6 @@ def generate_notifications_csv(**kwargs): raise Exception("Should never reach here") -def generate_single_notification_csv(notification): - fieldnames = ['Recipient', 'Template', 'Type', 'Status', 'Time'] - yield ','.join(fieldnames) + '\n' - - values = [ - notification['to'], - notification['template']['name'], - notification['template']['template_type'], - notification['status'], - notification['created_at'] - ] - line = ','.join(str(i) for i in values) + '\n' - yield line - - return - - def get_page_from_request(): if 'page' in request.args: try: diff --git a/tests/app/main/views/test_notifications.py b/tests/app/main/views/test_notifications.py new file mode 100644 index 000000000..b4b70b776 --- /dev/null +++ b/tests/app/main/views/test_notifications.py @@ -0,0 +1,28 @@ +from freezegun import freeze_time +import pytest +from werkzeug.datastructures import MultiDict + +from app.main.views.notifications import get_status_arg +from app.utils import ( + REQUESTED_STATUSES, + FAILURE_STATUSES, + SENDING_STATUSES, + DELIVERED_STATUSES, +) + + +@pytest.mark.parametrize('multidict_args, expected_statuses', [ + ([], REQUESTED_STATUSES), + ([('status', '')], REQUESTED_STATUSES), + ([('status', 'garbage')], REQUESTED_STATUSES), + ([('status', 'sending')], SENDING_STATUSES), + ([('status', 'delivered')], DELIVERED_STATUSES), + ([('status', 'failed')], FAILURE_STATUSES), +]) +def test_status_filters(mocker, multidict_args, expected_statuses): + mocker.patch('app.main.views.notifications.current_app') + + args = MultiDict(multidict_args) + args['status'] = get_status_arg(args) + + assert sorted(args['status']) == sorted(expected_statuses)