From f0784109a1a72332f290ceba304c025fbd75127e Mon Sep 17 00:00:00 2001 From: Imdad Ahad Date: Mon, 25 Sep 2017 16:01:24 +0100 Subject: [PATCH] Upsert into letter contact table when updating a service's letter contact block --- app/service/rest.py | 13 +++++++++++-- tests/app/service/test_rest.py | 20 +++++++++++++++++++- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/app/service/rest.py b/app/service/rest.py index 909675df5..b54e792bc 100644 --- a/app/service/rest.py +++ b/app/service/rest.py @@ -46,8 +46,14 @@ from app.dao.service_whitelist_dao import ( dao_add_and_commit_whitelisted_contacts, dao_remove_service_whitelist ) -from app.dao.service_email_reply_to_dao import create_or_update_email_reply_to, dao_get_reply_to_by_service_id, \ - add_reply_to_email_address_for_service, update_reply_to_email_address, dao_get_reply_to_by_id +from app.dao.service_email_reply_to_dao import ( + add_reply_to_email_address_for_service, + create_or_update_email_reply_to, + dao_get_reply_to_by_id, + dao_get_reply_to_by_service_id, + update_reply_to_email_address +) +from app.dao.service_letter_contact_dao import create_or_update_letter_contact from app.dao.provider_statistics_dao import get_fragment_count from app.dao.users_dao import get_user_by_id from app.errors import ( @@ -151,6 +157,9 @@ def update_service(service_id): if 'sms_sender' in req_json: insert_or_update_service_sms_sender(fetched_service, req_json['sms_sender']) + if 'letter_contact_block' in req_json: + create_or_update_letter_contact(fetched_service.id, req_json['letter_contact_block']) + if service_going_live: send_notification_to_service_users( service_id=service_id, diff --git a/tests/app/service/test_rest.py b/tests/app/service/test_rest.py index 0551ec7c5..7dbced56f 100644 --- a/tests/app/service/test_rest.py +++ b/tests/app/service/test_rest.py @@ -12,7 +12,7 @@ from app.dao.services_dao import dao_remove_user_from_service from app.dao.templates_dao import dao_redact_template from app.dao.users_dao import save_model_user from app.models import ( - User, Organisation, Service, ServicePermission, Notification, ServiceEmailReplyTo, + User, Organisation, Service, ServicePermission, Notification, ServiceEmailReplyTo, ServiceLetterContact, DVLA_ORG_LAND_REGISTRY, KEY_TYPE_NORMAL, KEY_TYPE_TEAM, KEY_TYPE_TEST, EMAIL_TYPE, SMS_TYPE, LETTER_TYPE, INTERNATIONAL_SMS_TYPE, INBOUND_SMS_TYPE, @@ -2301,3 +2301,21 @@ def test_get_email_reply_to_address(client, notify_db, notify_db_session): assert response.status_code == 200 assert json.loads(response.get_data(as_text=True)) == reply_to.serialize() + + +def test_update_service_letter_contact_upserts_letter_contact(admin_request, sample_service): + response = admin_request.post( + 'service.update_service', + service_id=sample_service.id, + _data={ + 'letter_contact_block': 'Aberdeen, AB23 1XH' + }, + _expected_status=200 + ) + + letter_contacts = ServiceLetterContact.query.all() + + assert len(letter_contacts) == 1 + assert letter_contacts[0].contact_block == 'Aberdeen, AB23 1XH' + assert letter_contacts[0].is_default + assert response['data']['letter_contact_block'] == 'Aberdeen, AB23 1XH'