diff --git a/app/schemas.py b/app/schemas.py index 23e99fb5a..0a7eab8d1 100644 --- a/app/schemas.py +++ b/app/schemas.py @@ -259,19 +259,17 @@ class NotificationStatusSchema(BaseSchema): @pre_dump def handle_personalisation_property(self, in_data): - if in_data.personalisation: - self.personalisation = in_data.personalisation + self.personalisation = in_data.personalisation return in_data @post_dump def handle_template_merge(self, in_data): - if in_data.get('personalisation'): - from notifications_utils.template import Template - template = Template(in_data['template'], in_data['personalisation']) - in_data['body'] = template.replaced - if in_data['template']['template_type'] == 'email': - in_data['subject'] = template.replaced_subject - in_data.pop('personalisation', None) + from notifications_utils.template import Template + template = Template(in_data['template'], in_data['personalisation']) + in_data['body'] = template.replaced + if in_data['template']['template_type'] == 'email': + in_data['subject'] = template.replaced_subject + in_data.pop('personalisation', None) in_data['template'].pop('content', None) in_data['template'].pop('subject', None) return in_data diff --git a/tests/app/notifications/test_rest.py b/tests/app/notifications/test_rest.py index a7fc33593..3890da134 100644 --- a/tests/app/notifications/test_rest.py +++ b/tests/app/notifications/test_rest.py @@ -13,7 +13,7 @@ from tests.app.conftest import sample_job as create_sample_job from tests.app.conftest import sample_service as create_sample_service -def test_get_notification_by_id(notify_api, sample_notification): +def test_get_sms_notification_by_id(notify_api, sample_notification): with notify_api.test_request_context(): with notify_api.test_client() as client: auth_header = create_authorization_header(service_id=sample_notification.service_id) @@ -35,6 +35,42 @@ def test_get_notification_by_id(notify_api, sample_notification): assert notification['to'] == '+447700900855' assert notification['service'] == str(sample_notification.service_id) assert response.status_code == 200 + assert notification['body'] == "This is a template" # sample_template.content + assert not notification.get('subject') + + +def test_get_email_notification_by_id(notify_api, notify_db, notify_db_session, sample_email_template): + + email_notification = create_sample_notification(notify_db, + notify_db_session, + service=sample_email_template.service, + template=sample_email_template) + + with notify_api.test_request_context(): + with notify_api.test_client() as client: + auth_header = create_authorization_header(service_id=email_notification.service_id) + + response = client.get( + '/notifications/{}'.format(email_notification.id), + headers=[auth_header]) + + notification = json.loads(response.get_data(as_text=True))['data']['notification'] + + assert notification['status'] == 'sending' + assert notification['template'] == { + 'id': str(email_notification.template.id), + 'name': email_notification.template.name, + 'template_type': email_notification.template.template_type} + assert notification['job'] == { + 'id': str(email_notification.job.id), + 'original_file_name': email_notification.job.original_file_name + } + + assert notification['to'] == '+447700900855' + assert notification['service'] == str(email_notification.service_id) + assert response.status_code == 200 + assert notification['body'] == sample_email_template.content + assert notification['subject'] == sample_email_template.subject def test_get_notifications_empty_result(notify_api, sample_api_key): @@ -75,6 +111,7 @@ def test_get_all_notifications(notify_api, sample_notification): assert notifications['notifications'][0]['to'] == '+447700900855' assert notifications['notifications'][0]['service'] == str(sample_notification.service_id) + assert notifications['notifications'][0]['body'] == "This is a template" # sample_template.content assert response.status_code == 200