From 0d9519c656522aacd9f8d516d0bb620794cde1ba Mon Sep 17 00:00:00 2001 From: Chris Hill-Scott Date: Fri, 17 Jun 2016 12:57:43 +0100 Subject: [PATCH] Remove wrapper around response object MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Before: ```json {'data': {'template': '…'}} ``` There’s no need to wrap the response in key because there will only ever be one valid key for the template preview endpoint. Flatter is better: ```json { 'content': '…', 'subject': '…', 'template_type': '…', … } ``` The response will be different if there’s an error, but you should be checking the status code first anyway. This commit: - changes the template preview endpoint to return the above format - adds a test to make sure that the original `/service/…/template/…` endpoint still returns JSON in the same format (with a `data` key) --- app/template/rest.py | 2 +- tests/app/template/test_rest.py | 49 +++++++++++++++++++++++++++------ 2 files changed, 42 insertions(+), 9 deletions(-) diff --git a/app/template/rest.py b/app/template/rest.py index 692f27d14..a032f6e39 100644 --- a/app/template/rest.py +++ b/app/template/rest.py @@ -108,7 +108,7 @@ def preview_template_by_id_and_service_id(service_id, template_id): data['subject'], data['content'] = template_object.replaced_subject, template_object.replaced - return jsonify(data=data) + return jsonify(data) @template.route('//version/') diff --git a/tests/app/template/test_rest.py b/tests/app/template/test_rest.py index ff69342fe..2d36e4360 100644 --- a/tests/app/template/test_rest.py +++ b/tests/app/template/test_rest.py @@ -327,15 +327,48 @@ def test_should_get_only_templates_for_that_service(notify_api, sample_user, ser @pytest.mark.parametrize( - "subject, content, path, expected_subject, expected_content, expected_error", [ + "subject, content, template_type", [ ( 'about your ((thing))', 'hello ((name)) we’ve received your ((thing))', - '/service/{}/template/{}', - 'about your ((thing))', - 'hello ((name)) we’ve received your ((thing))', - None + 'email' ), + ( + None, + 'hello ((name)) we’ve received your ((thing))', + 'sms' + ) + ] +) +def test_should_get_a_single_template( + notify_db, + notify_api, + sample_user, + service_factory, + subject, + content, + template_type +): + with notify_api.test_request_context(), notify_api.test_client() as client: + + template = create_sample_template( + notify_db, notify_db.session, subject_line=subject, content=content, template_type=template_type + ) + + response = client.get( + '/service/{}/template/{}'.format(template.service.id, template.id), + headers=[create_authorization_header()] + ) + + data = json.loads(response.get_data(as_text=True))['data'] + + assert response.status_code == 200 + assert data['content'] == content + assert data['subject'] == subject + + +@pytest.mark.parametrize( + "subject, content, path, expected_subject, expected_content, expected_error", [ ( 'about your thing', 'hello user we’ve received your thing', @@ -368,7 +401,7 @@ def test_should_get_only_templates_for_that_service(notify_api, sample_user, ser ) ] ) -def test_should_get_a_single_template( +def test_should_preview_a_single_template( notify_db, notify_api, sample_user, @@ -398,8 +431,8 @@ def test_should_get_a_single_template( assert content['message']['template'] == [expected_error] else: assert response.status_code == 200 - assert content['data']['content'] == expected_content - assert content['data']['subject'] == expected_subject + assert content['content'] == expected_content + assert content['subject'] == expected_subject def test_should_return_empty_array_if_no_templates_for_service(notify_api, sample_service):