From 41f3293cd5afef5f08fca0bb0f1954ee5dd33da0 Mon Sep 17 00:00:00 2001 From: Rebecca Law Date: Wed, 30 May 2018 10:18:37 +0100 Subject: [PATCH] This fixes a bug where the folder name was not correctly returning the right date because date used to compare was in UTC but the datetime used for the job start time is in BST. Units tests have been added for the affected method. --- app/letters/utils.py | 3 ++- tests/app/letters/test_letter_utils.py | 22 +++++++++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/app/letters/utils.py b/app/letters/utils.py index 17863a953..3902bf932 100644 --- a/app/letters/utils.py +++ b/app/letters/utils.py @@ -7,6 +7,7 @@ from flask import current_app from notifications_utils.s3 import s3upload from app.models import KEY_TYPE_TEST +from app.utils import convert_utc_to_bst from app.variables import Retention @@ -26,7 +27,7 @@ def get_folder_name(_now, is_test_or_scan_letter=False): folder_name = '' else: print_datetime = _now - if _now.time() > current_app.config.get('LETTER_PROCESSING_DEADLINE'): + if convert_utc_to_bst(_now).time() > current_app.config.get('LETTER_PROCESSING_DEADLINE'): print_datetime = _now + timedelta(days=1) folder_name = '{}/'.format(print_datetime.date()) return folder_name diff --git a/tests/app/letters/test_letter_utils.py b/tests/app/letters/test_letter_utils.py index b4cfe678f..e68e1093e 100644 --- a/tests/app/letters/test_letter_utils.py +++ b/tests/app/letters/test_letter_utils.py @@ -12,7 +12,8 @@ from app.letters.utils import ( get_letter_pdf, upload_letter_pdf, move_scanned_pdf_to_test_or_live_pdf_bucket, - ScanErrorType, move_failed_pdf) + ScanErrorType, move_failed_pdf, get_folder_name +) from app.models import KEY_TYPE_NORMAL, KEY_TYPE_TEST, PRECOMPILED_TEMPLATE_NAME from app.variables import Retention @@ -199,3 +200,22 @@ def test_move_failed_pdf_scan_failed(notify_api): assert 'FAILURE/' + filename in [o.key for o in bucket.objects.all()] assert filename not in [o.key for o in bucket.objects.all()] + + +@pytest.mark.parametrize("freeze_date, expected_folder_name", + [("2018-04-01 17:50:00", "2018-04-02/"), + ("2018-07-02 16:29:00", "2018-07-02/"), + ("2018-07-02 16:30:00", "2018-07-02/"), + ("2018-07-02 16:31:00", "2018-07-03/"), + ("2018-01-02 16:31:00", "2018-01-02/"), + ("2018-01-02 17:31:00", "2018-01-03/"), + ]) +def test_get_folder_name_in_british_summer_time(notify_api, freeze_date, expected_folder_name): + with freeze_time(freeze_date): + now = datetime.utcnow() + folder_name = get_folder_name(_now=now, is_test_or_scan_letter=False) + assert folder_name == expected_folder_name + + +def test_get_folder_name_returns_empty_string_for_test_letter(): + assert '' == get_folder_name(datetime.utcnow(), is_test_or_scan_letter=True)