Remove wrapper around response object

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)
This commit is contained in:
Chris Hill-Scott
2016-06-17 12:57:43 +01:00
parent cf91ce57fc
commit 0d9519c656
2 changed files with 42 additions and 9 deletions

View File

@@ -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 data['subject'], data['content'] = template_object.replaced_subject, template_object.replaced
return jsonify(data=data) return jsonify(data)
@template.route('/<uuid:template_id>/version/<int:version>') @template.route('/<uuid:template_id>/version/<int:version>')

View File

@@ -327,15 +327,48 @@ def test_should_get_only_templates_for_that_service(notify_api, sample_user, ser
@pytest.mark.parametrize( @pytest.mark.parametrize(
"subject, content, path, expected_subject, expected_content, expected_error", [ "subject, content, template_type", [
( (
'about your ((thing))', 'about your ((thing))',
'hello ((name)) weve received your ((thing))', 'hello ((name)) weve received your ((thing))',
'/service/{}/template/{}', 'email'
'about your ((thing))',
'hello ((name)) weve received your ((thing))',
None
), ),
(
None,
'hello ((name)) weve 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', 'about your thing',
'hello user weve received your thing', 'hello user weve 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_db,
notify_api, notify_api,
sample_user, sample_user,
@@ -398,8 +431,8 @@ def test_should_get_a_single_template(
assert content['message']['template'] == [expected_error] assert content['message']['template'] == [expected_error]
else: else:
assert response.status_code == 200 assert response.status_code == 200
assert content['data']['content'] == expected_content assert content['content'] == expected_content
assert content['data']['subject'] == expected_subject assert content['subject'] == expected_subject
def test_should_return_empty_array_if_no_templates_for_service(notify_api, sample_service): def test_should_return_empty_array_if_no_templates_for_service(notify_api, sample_service):