fix timezone related cancel letter job bug

This commit is contained in:
Leo Hemsted
2020-04-14 13:08:38 +01:00
parent f90c475126
commit 7fe075393d
4 changed files with 30 additions and 14 deletions

View File

@@ -336,7 +336,7 @@ def assert_job_stat(job, result, sent, delivered, failed):
@freeze_time('2019-06-13 13:00')
def test_dao_cancel_letter_job_cancels_job_and_returns_number_of_cancelled_notifications(
sample_letter_template, admin_request
sample_letter_template
):
job = create_job(template=sample_letter_template, notification_count=1, job_status='finished')
notification = create_notification(template=job.template, job=job, status='created')
@@ -347,7 +347,7 @@ def test_dao_cancel_letter_job_cancels_job_and_returns_number_of_cancelled_notif
@freeze_time('2019-06-13 13:00')
def test_can_letter_job_be_cancelled_returns_true_if_job_can_be_cancelled(sample_letter_template, admin_request):
def test_can_letter_job_be_cancelled_returns_true_if_job_can_be_cancelled(sample_letter_template):
job = create_job(template=sample_letter_template, notification_count=1, job_status='finished')
create_notification(template=job.template, job=job, status='created')
result, errors = can_letter_job_be_cancelled(job)
@@ -357,7 +357,7 @@ def test_can_letter_job_be_cancelled_returns_true_if_job_can_be_cancelled(sample
@freeze_time('2019-06-13 13:00')
def test_can_letter_job_be_cancelled_returns_false_and_error_message_if_notification_status_sending(
sample_letter_template, admin_request
sample_letter_template
):
job = create_job(template=sample_letter_template, notification_count=2, job_status='finished')
create_notification(template=job.template, job=job, status='sending')
@@ -368,7 +368,7 @@ def test_can_letter_job_be_cancelled_returns_false_and_error_message_if_notifica
def test_can_letter_job_be_cancelled_returns_false_and_error_message_if_letters_already_sent_to_dvla(
sample_letter_template, admin_request
sample_letter_template
):
with freeze_time('2019-06-13 13:00'):
job = create_job(template=sample_letter_template, notification_count=1, job_status='finished')
@@ -384,7 +384,7 @@ def test_can_letter_job_be_cancelled_returns_false_and_error_message_if_letters_
@freeze_time('2019-06-13 13:00')
def test_can_letter_job_be_cancelled_returns_false_and_error_message_if_not_a_letter_job(
sample_template, admin_request
sample_template
):
job = create_job(template=sample_template, notification_count=1, job_status='finished')
create_notification(template=job.template, job=job, status='created')
@@ -395,7 +395,7 @@ def test_can_letter_job_be_cancelled_returns_false_and_error_message_if_not_a_le
@freeze_time('2019-06-13 13:00')
def test_can_letter_job_be_cancelled_returns_false_and_error_message_if_job_not_finished(
sample_letter_template, admin_request
sample_letter_template
):
job = create_job(template=sample_letter_template, notification_count=1, job_status="in progress")
create_notification(template=job.template, job=job, status='created')
@@ -406,7 +406,7 @@ def test_can_letter_job_be_cancelled_returns_false_and_error_message_if_job_not_
@freeze_time('2019-06-13 13:00')
def test_can_letter_job_be_cancelled_returns_false_and_error_message_if_notifications_not_in_db_yet(
sample_letter_template, admin_request
sample_letter_template
):
job = create_job(template=sample_letter_template, notification_count=2, job_status='finished')
create_notification(template=job.template, job=job, status='created')
@@ -415,6 +415,17 @@ def test_can_letter_job_be_cancelled_returns_false_and_error_message_if_notifica
assert errors == "We are still processing these letters, please try again in a minute."
def test_can_letter_job_be_cancelled_respects_bst(sample_letter_template):
job = create_job(template=sample_letter_template, created_at=datetime(2020, 4, 9, 23, 30), job_status='finished')
create_notification(template=job.template, job=job, status='created', created_at=datetime(2020, 4, 9, 23, 32))
with freeze_time('2020-04-10 10:00'):
result, errors = can_letter_job_be_cancelled(job)
assert not errors
assert result
def test_find_jobs_with_missing_rows(sample_email_template):
healthy_job = create_job(template=sample_email_template,
notification_count=3,

View File

@@ -3350,12 +3350,18 @@ def test_cancel_notification_for_service_raises_error_if_its_too_late_to_cancel(
assert response['result'] == 'error'
@pytest.mark.parametrize('created_at', [
datetime(2018, 7, 6, 22, 30), # yesterday evening
datetime(2018, 7, 6, 23, 30), # this morning early hours (in bst)
datetime(2018, 7, 7, 10, 0), # this morning normal hours
])
@freeze_time('2018-7-7 16:00:00')
def test_cancel_notification_for_service_updates_letter_if_still_time_to_cancel(
admin_request,
sample_letter_notification,
created_at,
):
sample_letter_notification.created_at = datetime(2018, 7, 7, 10, 0)
sample_letter_notification.created_at = created_at
response = admin_request.post(
'service.cancel_notification_for_service',