mirror of
https://github.com/GSA/notifications-api.git
synced 2026-07-15 19:01:50 -04:00
letter_job cleanup
This commit is contained in:
@@ -291,41 +291,6 @@ def test_should_process_email_job_with_sender_id(email_job_with_placeholders, mo
|
||||
)
|
||||
|
||||
|
||||
@freeze_time("2016-01-01 11:09:00.061258")
|
||||
def test_should_process_letter_job(sample_letter_job, mocker):
|
||||
csv = """address_line_1,address_line_2,address_line_3,address_line_4,postcode,name
|
||||
A1,A2,A3,A4,A_POST,Alice
|
||||
"""
|
||||
s3_mock = mocker.patch('app.celery.tasks.s3.get_job_and_metadata_from_s3',
|
||||
return_value=(csv, {"sender_id": None}))
|
||||
process_row_mock = mocker.patch('app.celery.tasks.process_row')
|
||||
mocker.patch('app.celery.tasks.create_uuid', return_value="uuid")
|
||||
|
||||
process_job(sample_letter_job.id)
|
||||
|
||||
s3_mock.assert_called_once_with(
|
||||
service_id=str(sample_letter_job.service.id),
|
||||
job_id=str(sample_letter_job.id)
|
||||
)
|
||||
|
||||
row_call = process_row_mock.mock_calls[0][1]
|
||||
assert row_call[0].index == 0
|
||||
assert row_call[0].recipient == ['A1', 'A2', 'A3', 'A4', None, None, 'A_POST', None]
|
||||
assert row_call[0].personalisation == {
|
||||
'addressline1': 'A1',
|
||||
'addressline2': 'A2',
|
||||
'addressline3': 'A3',
|
||||
'addressline4': 'A4',
|
||||
'postcode': 'A_POST'
|
||||
}
|
||||
assert row_call[2] == sample_letter_job
|
||||
assert row_call[3] == sample_letter_job.service
|
||||
|
||||
assert process_row_mock.call_count == 1
|
||||
|
||||
assert sample_letter_job.job_status == 'finished'
|
||||
|
||||
|
||||
def test_should_process_all_sms_job(sample_job_with_placeholdered_template,
|
||||
mocker):
|
||||
mocker.patch('app.celery.tasks.s3.get_job_and_metadata_from_s3',
|
||||
|
||||
@@ -407,25 +407,6 @@ def sample_scheduled_job(sample_template_with_placeholders):
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def sample_letter_job(sample_letter_template):
|
||||
service = sample_letter_template.service
|
||||
data = {
|
||||
'id': uuid.uuid4(),
|
||||
'service_id': service.id,
|
||||
'service': service,
|
||||
'template_id': sample_letter_template.id,
|
||||
'template_version': sample_letter_template.version,
|
||||
'original_file_name': 'some.csv',
|
||||
'notification_count': 1,
|
||||
'created_at': datetime.utcnow(),
|
||||
'created_by': service.created_by,
|
||||
}
|
||||
job = Job(**data)
|
||||
dao_create_job(job)
|
||||
return job
|
||||
|
||||
|
||||
@pytest.fixture(scope='function')
|
||||
def sample_notification_with_job(notify_db_session):
|
||||
service = create_service(check_if_service_exists=True)
|
||||
|
||||
@@ -289,7 +289,7 @@ def test_get_rates_for_billing(notify_db_session):
|
||||
create_rate(start_date=datetime.utcnow(), value=33, notification_type='email')
|
||||
rates = get_rates_for_billing()
|
||||
|
||||
assert len(rates) == 2
|
||||
assert len(rates) == 3
|
||||
|
||||
|
||||
@freeze_time('2017-06-01 12:00')
|
||||
|
||||
@@ -7,8 +7,6 @@ from freezegun import freeze_time
|
||||
from sqlalchemy.exc import IntegrityError
|
||||
|
||||
from app.dao.jobs_dao import (
|
||||
can_letter_job_be_cancelled,
|
||||
dao_cancel_letter_job,
|
||||
dao_create_job,
|
||||
dao_get_future_scheduled_job_by_id_and_service_id,
|
||||
dao_get_job_by_service_id_and_job_id,
|
||||
@@ -359,98 +357,6 @@ def assert_job_stat(job, result, sent, delivered, failed):
|
||||
assert result.failed == 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
|
||||
):
|
||||
job = create_job(template=sample_letter_template, notification_count=1, job_status='finished')
|
||||
notification = create_notification(template=job.template, job=job, status='created')
|
||||
result = dao_cancel_letter_job(job)
|
||||
assert result == 1
|
||||
assert notification.status == 'cancelled'
|
||||
assert job.job_status == 'cancelled'
|
||||
|
||||
|
||||
@freeze_time('2019-06-13 13:00')
|
||||
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)
|
||||
assert result
|
||||
assert not errors
|
||||
|
||||
|
||||
@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
|
||||
):
|
||||
job = create_job(template=sample_letter_template, notification_count=2, job_status='finished')
|
||||
create_notification(template=job.template, job=job, status='sending')
|
||||
create_notification(template=job.template, job=job, status='created')
|
||||
result, errors = can_letter_job_be_cancelled(job)
|
||||
assert not result
|
||||
assert errors == "It’s too late to cancel sending, these letters have already been sent."
|
||||
|
||||
|
||||
def test_can_letter_job_be_cancelled_returns_false_and_error_message_if_letters_already_sent_to_dvla(
|
||||
sample_letter_template
|
||||
):
|
||||
with freeze_time('2019-06-13 13:00'):
|
||||
job = create_job(template=sample_letter_template, notification_count=1, job_status='finished')
|
||||
letter = create_notification(template=job.template, job=job, status='created')
|
||||
|
||||
with freeze_time('2019-06-13 22:32'):
|
||||
result, errors = can_letter_job_be_cancelled(job)
|
||||
assert not result
|
||||
assert errors == "It’s too late to cancel sending, these letters have already been sent."
|
||||
assert letter.status == 'created'
|
||||
assert job.job_status == 'finished'
|
||||
|
||||
|
||||
@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
|
||||
):
|
||||
job = create_job(template=sample_template, notification_count=1, job_status='finished')
|
||||
create_notification(template=job.template, job=job, status='created')
|
||||
result, errors = can_letter_job_be_cancelled(job)
|
||||
assert not result
|
||||
assert errors == "Only letter jobs can be cancelled through this endpoint. This is not a letter job."
|
||||
|
||||
|
||||
@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
|
||||
):
|
||||
job = create_job(template=sample_letter_template, notification_count=1, job_status="in progress")
|
||||
create_notification(template=job.template, job=job, status='created')
|
||||
result, errors = can_letter_job_be_cancelled(job)
|
||||
assert not result
|
||||
assert errors == "We are still processing these letters, please try again in a minute."
|
||||
|
||||
|
||||
@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
|
||||
):
|
||||
job = create_job(template=sample_letter_template, notification_count=2, job_status='finished')
|
||||
create_notification(template=job.template, job=job, status='created')
|
||||
result, errors = can_letter_job_be_cancelled(job)
|
||||
assert not result
|
||||
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,
|
||||
|
||||
Reference in New Issue
Block a user