From 8545b097f9eba6f10b00ca49eba2c748bb6113b8 Mon Sep 17 00:00:00 2001 From: Rebecca Law Date: Mon, 16 Mar 2020 16:45:34 +0000 Subject: [PATCH 1/3] [WIP] --- app/dao/jobs_dao.py | 1 + app/job/rest.py | 1 - app/schemas.py | 1 + 3 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/dao/jobs_dao.py b/app/dao/jobs_dao.py index baff3bbb5..b2f48d3ce 100644 --- a/app/dao/jobs_dao.py +++ b/app/dao/jobs_dao.py @@ -126,6 +126,7 @@ def dao_get_future_scheduled_job_by_id_and_service_id(job_id, service_id): def dao_create_job(job): if not job.id: job.id = uuid.uuid4() + db.session.add(job) db.session.commit() diff --git a/app/job/rest.py b/app/job/rest.py index e5ce149fe..cde9c2b11 100644 --- a/app/job/rest.py +++ b/app/job/rest.py @@ -141,7 +141,6 @@ def create_job(service_id): raise InvalidRequest("Create job is not allowed: service is inactive ", 403) data = request.get_json() - data.update({ "service": service_id }) diff --git a/app/schemas.py b/app/schemas.py index 5dd616617..e53782b04 100644 --- a/app/schemas.py +++ b/app/schemas.py @@ -381,6 +381,7 @@ class JobSchema(BaseSchema): ServiceSchema, attribute="service", dump_to="service_name", only=["name"], dump_only=True) template_type = fields.Method('get_template_type', dump_only=True) + contact_list_id = field_for(models.Job, 'contact_list_id') def get_template_type(self, job): return job.template.template_type From 95c2dabaca4b6ceafb1bd50f49f36065ae217d31 Mon Sep 17 00:00:00 2001 From: Rebecca Law Date: Tue, 17 Mar 2020 08:20:01 +0000 Subject: [PATCH 2/3] Add service_contact_list id to the JobSchema. --- app/dao/jobs_dao.py | 1 - tests/app/job/test_rest.py | 34 ++++++++++++++++++++++++++++++++-- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/app/dao/jobs_dao.py b/app/dao/jobs_dao.py index b2f48d3ce..baff3bbb5 100644 --- a/app/dao/jobs_dao.py +++ b/app/dao/jobs_dao.py @@ -126,7 +126,6 @@ def dao_get_future_scheduled_job_by_id_and_service_id(job_id, service_id): def dao_create_job(job): if not job.id: job.id = uuid.uuid4() - db.session.add(job) db.session.commit() diff --git a/tests/app/job/test_rest.py b/tests/app/job/test_rest.py index e9141aa98..cb6756cd9 100644 --- a/tests/app/job/test_rest.py +++ b/tests/app/job/test_rest.py @@ -9,11 +9,16 @@ import pytz import app.celery.tasks from app.dao.templates_dao import dao_update_template -from app.models import JOB_STATUS_TYPES, JOB_STATUS_PENDING +from app.models import JOB_STATUS_TYPES, JOB_STATUS_PENDING, Job from tests import create_authorization_header from tests.conftest import set_config -from tests.app.db import create_ft_notification_status, create_job, create_notification +from tests.app.db import ( + create_ft_notification_status, + create_job, + create_notification, + create_service_contact_list +) def test_get_job_with_invalid_service_id_returns404(client, sample_service): @@ -233,6 +238,30 @@ def test_create_scheduled_job(client, sample_template, mocker, fake_uuid): assert resp_json['data']['notification_count'] == 1 +def test_create_job_with_contact_list_id(client, mocker, sample_template, fake_uuid): + mocker.patch('app.celery.tasks.process_job.apply_async') + mocker.patch('app.job.rest.get_job_metadata_from_s3', return_value={ + 'template_id': str(sample_template.id) + }) + contact_list = create_service_contact_list() + data = { + 'id': fake_uuid, + 'valid': 'True', + 'original_file_name': contact_list.original_file_name, + 'created_by': str(sample_template.service.users[0].id), + 'notification_count': 100, + 'contact_list_id': str(contact_list.id), + } + response = client.post( + f'/service/{sample_template.service_id}/job', + data=json.dumps(data), + headers=[('Content-Type', 'application/json'), create_authorization_header()]) + resp_json = response.get_json() + assert response.status_code == 201 + assert resp_json['data']['contact_list_id'] == str(contact_list.id) + assert resp_json['data']['original_file_name'] == 'EmergencyContactList.xls' + + def test_create_job_returns_403_if_service_is_not_active(client, fake_uuid, sample_service, mocker): sample_service.active = False mock_job_dao = mocker.patch("app.dao.jobs_dao.dao_create_job") @@ -683,6 +712,7 @@ def test_get_jobs(admin_request, sample_template): 'template_type': 'sms', 'template_version': 1, 'updated_at': None, + 'contact_list_id': None } From 6667c04cf262504d79d8b872617fbf7b1ce6cd46 Mon Sep 17 00:00:00 2001 From: Chris Hill-Scott Date: Tue, 17 Mar 2020 10:07:47 +0000 Subject: [PATCH 3/3] Fix unused import --- tests/app/job/test_rest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/app/job/test_rest.py b/tests/app/job/test_rest.py index cb6756cd9..4ddb50d6f 100644 --- a/tests/app/job/test_rest.py +++ b/tests/app/job/test_rest.py @@ -9,7 +9,7 @@ import pytz import app.celery.tasks from app.dao.templates_dao import dao_update_template -from app.models import JOB_STATUS_TYPES, JOB_STATUS_PENDING, Job +from app.models import JOB_STATUS_TYPES, JOB_STATUS_PENDING from tests import create_authorization_header from tests.conftest import set_config