diff --git a/app/celery/scheduled_tasks.py b/app/celery/scheduled_tasks.py index f95420f33..e40021d38 100644 --- a/app/celery/scheduled_tasks.py +++ b/app/celery/scheduled_tasks.py @@ -308,10 +308,10 @@ def populate_monthly_billing(): @notify_celery.task(name="run-letter-jobs") @statsd(namespace="tasks") def run_letter_jobs(): - ids = dao_get_letter_jobs_by_status(JOB_STATUS_READY_TO_SEND) + job_ids = [job.id for job in dao_get_letter_jobs_by_status(JOB_STATUS_READY_TO_SEND)] notify_celery.send_task( name=QueueNames.DVLA_FILES, - args=(ids), + args=(job_ids), queue=QueueNames.PROCESS_FTP ) - current_app.logger.info("Queued {} ready letter job ids onto {}".format(len(ids), QueueNames.PROCESS_FTP)) + current_app.logger.info("Queued {} ready letter job ids onto {}".format(len(job_ids), QueueNames.PROCESS_FTP)) diff --git a/tests/app/celery/test_scheduled_tasks.py b/tests/app/celery/test_scheduled_tasks.py index f2720a2cb..4d1be73ae 100644 --- a/tests/app/celery/test_scheduled_tasks.py +++ b/tests/app/celery/test_scheduled_tasks.py @@ -41,6 +41,7 @@ from app.dao.provider_details_dao import ( from app.models import ( Service, Template, SMS_TYPE, LETTER_TYPE, + JOB_STATUS_READY_TO_SEND, MonthlyBilling) from app.utils import get_london_midnight_in_utc, convert_utc_to_bst from tests.app.db import create_notification, create_service, create_template, create_job, create_rate @@ -683,16 +684,17 @@ def test_populate_monthly_billing_updates_correct_month_in_bst(sample_template): assert monthly_billing[1].monthly_totals[0]['total_cost'] == 0.0123 -def test_run_letter_jobs(client, mocker): - job_ids = [str(uuid.uuid4()), str(uuid.uuid4())] +def test_run_letter_jobs(client, mocker, sample_letter_template): + jobs = [create_job(template=sample_letter_template, job_status=JOB_STATUS_READY_TO_SEND), + create_job(template=sample_letter_template, job_status=JOB_STATUS_READY_TO_SEND)] mocker.patch( "app.celery.scheduled_tasks.dao_get_letter_jobs_by_status", - return_value=job_ids + return_value=jobs ) mock_celery = mocker.patch("app.celery.tasks.notify_celery.send_task") run_letter_jobs() mock_celery.assert_called_once_with(name=QueueNames.DVLA_FILES, - args=(job_ids), + args=([job.id for job in jobs]), queue=QueueNames.PROCESS_FTP) diff --git a/tests/app/dao/test_jobs_dao.py b/tests/app/dao/test_jobs_dao.py index 72f3ece04..ea09d5c18 100644 --- a/tests/app/dao/test_jobs_dao.py +++ b/tests/app/dao/test_jobs_dao.py @@ -34,6 +34,7 @@ from tests.app.conftest import sample_template as create_template from tests.app.db import ( create_user, create_job as create_db_job, + create_service as create_db_service, create_template as create_db_template ) @@ -551,16 +552,34 @@ def stats_set_up(notify_db, notify_db_session, service): def test_dao_get_letter_jobs_by_status(sample_service): - create_db_template(service=sample_service, template_type=SMS_TYPE) - create_db_template(service=sample_service, template_type=EMAIL_TYPE) + another_service = create_db_service(service_name="another service") + + sms_template = create_db_template(service=sample_service, template_type=SMS_TYPE) + email_template = create_db_template(service=sample_service, template_type=EMAIL_TYPE) letter_template = create_db_template(service=sample_service, template_type=LETTER_TYPE) - jobs = [] - jobs.append(create_db_job(letter_template, job_status=JOB_STATUS_READY_TO_SEND, original_file_name='1.csv')) - jobs.append(create_db_job(letter_template, job_status=JOB_STATUS_READY_TO_SEND, original_file_name='2.csv')) - create_db_job(letter_template, job_status=JOB_STATUS_SENT_TO_DVLA, original_file_name='3.csv') - create_db_job(letter_template, job_status=JOB_STATUS_FINISHED, original_file_name='4.csv') - create_db_job(letter_template, job_status=JOB_STATUS_PENDING, original_file_name='5.csv') + another_letter_template = create_db_template(service=another_service, template_type=LETTER_TYPE) + ready_letter_jobs = [] + ready_letter_jobs.append( + create_db_job( + letter_template, + job_status=JOB_STATUS_READY_TO_SEND, + original_file_name='1.csv' + ) + ) + ready_letter_jobs.append( + create_db_job( + another_letter_template, + job_status=JOB_STATUS_READY_TO_SEND, + original_file_name='2.csv' + ) + ) + create_db_job(sms_template, job_status=JOB_STATUS_FINISHED) + create_db_job(email_template, job_status=JOB_STATUS_FINISHED) + create_db_job(letter_template, job_status=JOB_STATUS_SENT_TO_DVLA) + create_db_job(letter_template, job_status=JOB_STATUS_FINISHED) + create_db_job(letter_template, job_status=JOB_STATUS_PENDING) + result = dao_get_letter_jobs_by_status(JOB_STATUS_READY_TO_SEND) assert len(result) == 2 - assert set(result) == set(jobs) + assert set(result) == set(ready_letter_jobs)