From cde7d781d518cb7c380dc4ce288d0c10eff9c348 Mon Sep 17 00:00:00 2001 From: Chris Hill-Scott Date: Fri, 23 Jun 2017 13:33:58 +0100 Subject: [PATCH] Fix empty table message MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug was happening because: ```python bool(list()) >>> False ``` ```python bool((item for item in list())) >>> True ``` i.e. generator expressions cast to boolean are `True`, even if they’re empty – Python doesn’t evaluate them. This was causing the functional tests to fail because it was taking too long for any table rows to appear on the page. --- app/main/views/jobs.py | 4 ++-- tests/app/main/views/test_activity.py | 18 ++++++++++++++++++ tests/conftest.py | 4 +++- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/app/main/views/jobs.py b/app/main/views/jobs.py index 17d9996ed..3ebcf4f33 100644 --- a/app/main/views/jobs.py +++ b/app/main/views/jobs.py @@ -386,7 +386,7 @@ def get_job_partials(job): def add_preview_of_content_to_notifications(notifications): - return ( + return [ dict( preview_of_content=( str(Template(notification['template'], notification['personalisation'])) @@ -396,4 +396,4 @@ def add_preview_of_content_to_notifications(notifications): **notification ) for notification in notifications - ) + ] diff --git a/tests/app/main/views/test_activity.py b/tests/app/main/views/test_activity.py index e53afd442..960a340f9 100644 --- a/tests/app/main/views/test_activity.py +++ b/tests/app/main/views/test_activity.py @@ -9,6 +9,7 @@ from bs4 import BeautifulSoup from app.main.views.jobs import get_time_left, get_status_filters from tests import notification_json from tests.conftest import SERVICE_ONE_ID +from tests.app.test_utils import normalize_spaces from freezegun import freeze_time @@ -135,6 +136,23 @@ def test_can_show_notifications( assert json_content.keys() == {'counts', 'notifications'} +def test_shows_message_when_no_notifications( + client_request, + mock_get_detailed_service, + mock_get_notifications_with_no_notifications, +): + + page = client_request.get( + 'main.view_notifications', + service_id=SERVICE_ONE_ID, + message_type='sms', + ) + + assert normalize_spaces(page.select('tbody tr')[0].text) == ( + 'No messages found' + ) + + @pytest.mark.parametrize(( 'initial_query_arguments,' 'form_post_data,' diff --git a/tests/conftest.py b/tests/conftest.py index d4c1f6754..5e4aefbe7 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1128,7 +1128,9 @@ def mock_get_notifications_with_no_notifications(mocker): status=None, limit_days=None, include_jobs=None, - include_from_test_key=None): + include_from_test_key=None, + to=None, + ): return notification_json(service_id, rows=0) return mocker.patch(