Error in task when letter template and in trial mode

This commit is contained in:
Ken Tsang
2017-08-25 16:11:39 +01:00
parent 41a71c703b
commit 7e70b44113
3 changed files with 35 additions and 1 deletions

View File

@@ -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__)

View File

@@ -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),

View File

@@ -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(