From 7e70b4411361de52eba01f0e989e94677e5a04f5 Mon Sep 17 00:00:00 2001 From: Ken Tsang Date: Fri, 25 Aug 2017 16:11:39 +0100 Subject: [PATCH] Error in task when letter template and in trial mode --- app/celery/tasks.py | 7 +++++++ tests/app/celery/test_tasks.py | 23 ++++++++++++++++++++++- tests/app/conftest.py | 6 ++++++ 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/app/celery/tasks.py b/app/celery/tasks.py index 008b0fd5e..0581d346b 100644 --- a/app/celery/tasks.py +++ b/app/celery/tasks.py @@ -75,6 +75,13 @@ def process_job(job_id): db_template = dao_get_template_by_id(job.template_id, job.template_version) + if db_template.template_type == LETTER_TYPE and service.restricted: + job.job_status = JOB_STATUS_ERROR + dao_update_job(job) + current_app.logger.warn( + "Job {} has been set to error, service {} is in trial mode".format(job_id, service.id)) + return + TemplateClass = get_template_class(db_template.template_type) template = TemplateClass(db_template.__dict__) diff --git a/tests/app/celery/test_tasks.py b/tests/app/celery/test_tasks.py index 717dc7b82..e2fde2d17 100644 --- a/tests/app/celery/test_tasks.py +++ b/tests/app/celery/test_tasks.py @@ -38,7 +38,8 @@ from app.models import ( SMS_TYPE, EMAIL_TYPE, LETTER_TYPE, - Job) + Job, + JOB_STATUS_ERROR) from tests.app import load_example_csv from tests.conftest import set_config @@ -977,6 +978,26 @@ def test_should_cancel_job_if_service_is_inactive(sample_service, mock_dvla_file_task.assert_not_called() +def test_should_error_job_if_service_is_restricted_and_letter_template_type( + sample_service, + sample_letter_job, + mocker +): + sample_service.restricted = True + + mocker.patch('app.celery.tasks.s3.get_job_from_s3') + mocker.patch('app.celery.tasks.process_row') + mock_dvla_file_task = mocker.patch('app.celery.tasks.build_dvla_file') + + process_job(sample_letter_job.id) + + job = jobs_dao.dao_get_job_by_id(sample_letter_job.id) + assert job.job_status == JOB_STATUS_ERROR + s3.get_job_from_s3.assert_not_called() + tasks.process_row.assert_not_called() + mock_dvla_file_task.assert_not_called() + + @pytest.mark.parametrize('template_type, expected_class', [ (SMS_TYPE, SMSMessageTemplate), (EMAIL_TYPE, WithSubjectTemplate), diff --git a/tests/app/conftest.py b/tests/app/conftest.py index 86437e7a1..13cc64ea3 100644 --- a/tests/app/conftest.py +++ b/tests/app/conftest.py @@ -271,6 +271,12 @@ def sample_letter_template(sample_service_full_permissions): return create_template(sample_service_full_permissions, template_type=LETTER_TYPE) +@pytest.fixture +def sample_trial_letter_template(sample_service_full_permissions): + sample_service_full_permissions.restricted = True + return create_template(sample_service_full_permissions, template_type=LETTER_TYPE) + + @pytest.fixture(scope='function') def sample_email_template_with_placeholders(notify_db, notify_db_session): return sample_email_template(