diff --git a/app/v2/template/template_schemas.py b/app/v2/template/template_schemas.py index a9c9afece..512b47ebd 100644 --- a/app/v2/template/template_schemas.py +++ b/app/v2/template/template_schemas.py @@ -1,3 +1,5 @@ +from notifications_utils.template import WithSubjectTemplate + from app.models import SMS_TYPE, TEMPLATE_TYPES from app.schema_validation.definitions import uuid, personalisation from app.utils import get_html_email_body_from_template @@ -75,13 +77,18 @@ post_template_preview_response = { def create_post_template_preview_response(template, template_object): - subject = template_object.subject if template.template_type != SMS_TYPE else None + if template.template_type == SMS_TYPE: + subject = None + body = str(template_object) + else: + subject = template_object.subject + body = WithSubjectTemplate.__str__(template_object) return { "id": template.id, "type": template.template_type, "version": template.version, - "body": str(template_object), + "body": body, "html": get_html_email_body_from_template(template_object), "subject": subject, "postage": template.postage diff --git a/tests/app/v2/template/test_post_template.py b/tests/app/v2/template/test_post_template.py index 4e392c8c6..411524ca4 100644 --- a/tests/app/v2/template/test_post_template.py +++ b/tests/app/v2/template/test_post_template.py @@ -2,7 +2,7 @@ import pytest from flask import json -from app.models import EMAIL_TYPE, SMS_TYPE, TEMPLATE_TYPES +from app.models import EMAIL_TYPE, LETTER_TYPE, SMS_TYPE, TEMPLATE_TYPES from tests import create_authorization_header from tests.app.db import create_template @@ -108,6 +108,41 @@ def test_valid_post_template_returns_200( assert expected_content in resp_json['body'] +@pytest.mark.parametrize("template_type", (EMAIL_TYPE, LETTER_TYPE)) +def test_email_and_letter_templates_not_rendered_into_content( + client, + sample_service, + template_type, +): + template = create_template( + sample_service, + template_type=template_type, + subject='Test', + content=( + 'Hello\n' + '\r\n' + '\r\n' + '\n' + '# This is a heading\n' + '\n' + 'Paragraph' + ), + ) + + auth_header = create_authorization_header(service_id=sample_service.id) + + response = client.post( + path='/v2/template/{}/preview'.format(template.id), + data=json.dumps(None), + headers=[('Content-Type', 'application/json'), auth_header]) + + assert response.status_code == 200 + + resp_json = json.loads(response.get_data(as_text=True)) + + assert resp_json['body'] == template.content + + @pytest.mark.parametrize("tmp_type", TEMPLATE_TYPES) def test_invalid_post_template_returns_400(client, sample_service, tmp_type): template = create_template(