From e8b5de533d6b2429edcf6cb4e6ad2fbe334c1898 Mon Sep 17 00:00:00 2001 From: Chris Hill-Scott Date: Wed, 1 Apr 2020 17:30:22 +0100 Subject: [PATCH] Fix relative date for returned letters MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It was saying ‘16 hours ago’ instead of today. This is because, in strftime: - `%M` means minute, not month - `%D` means short MM/DD/YY date, not day of the month The test wasn’t catching this because the freeze time and mocked value from the API were set to the same minute. --- app/__init__.py | 4 ++-- tests/app/main/views/test_dashboard.py | 24 +++++++++++++++++++----- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/app/__init__.py b/app/__init__.py index 51cb3a268..d84939125 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -386,9 +386,9 @@ def format_delta(date): def format_delta_days(date): now = datetime.now(timezone.utc) date = utc_string_to_aware_gmt_datetime(date) - if date.strftime('%Y-%M-%D') == now.strftime('%Y-%M-%D'): + if date.strftime('%Y-%m-%d') == now.strftime('%Y-%m-%d'): return "today" - if date.strftime('%Y-%M-%D') == (now - timedelta(days=1)).strftime('%Y-%M-%D'): + if date.strftime('%Y-%m-%d') == (now - timedelta(days=1)).strftime('%Y-%m-%d'): return "yesterday" return naturaltime_without_indefinite_article(now - date) diff --git a/tests/app/main/views/test_dashboard.py b/tests/app/main/views/test_dashboard.py index 34d29dbd7..b83c16b28 100644 --- a/tests/app/main/views/test_dashboard.py +++ b/tests/app/main/views/test_dashboard.py @@ -497,7 +497,21 @@ def test_returned_letters_not_visible_if_service_has_no_returned_letters( assert not page.select('#total-returned-letters') -@freeze_time('2020-01-10') +@pytest.mark.parametrize('reporting_date, expected_message', ( + ('2020-01-10 00:00:00.000000', ( + '4,000 returned letters latest report today' + )), + ('2020-01-09 23:59:59.000000', ( + '4,000 returned letters latest report yesterday' + )), + ('2020-01-08 12:12:12.000000', ( + '4,000 returned letters latest report 2 days ago' + )), + ('2019-12-10 00:00:00.000000', ( + '4,000 returned letters latest report 1 month ago' + )), +)) +@freeze_time('2020-01-10 12:34:00.000000') def test_returned_letters_shows_count_of_recently_returned_letters( client_request, mocker, @@ -509,12 +523,14 @@ def test_returned_letters_shows_count_of_recently_returned_letters( mock_get_usage, mock_get_free_sms_fragment_limit, mock_get_inbound_sms_summary, + reporting_date, + expected_message, ): mocker.patch( 'app.service_api_client.get_returned_letter_statistics', return_value={ 'returned_letter_count': 4000, - 'most_recent_report': '2020-01-10', + 'most_recent_report': reporting_date, }, ) page = client_request.get( @@ -522,9 +538,7 @@ def test_returned_letters_shows_count_of_recently_returned_letters( service_id=SERVICE_ONE_ID, ) banner = page.select_one('#total-returned-letters') - assert normalize_spaces( - banner.text - ) == '4,000 returned letters latest report today' + assert normalize_spaces(banner.text) == expected_message assert banner['href'] == url_for( 'main.returned_letter_summary', service_id=SERVICE_ONE_ID )