Add handling for data types other than list/string

Brings in:
- [ ] https://github.com/alphagov/notifications-utils/pull/135

Also adds extra tests for:
- the exact issue that we saw in production when #867 was deployed
- what happens when `None` is passed as a placeholder value, because
  this should never get as far as the relevant bit of utils
This commit is contained in:
Chris Hill-Scott
2017-04-05 09:28:17 +01:00
parent 7943b6819b
commit 1802c84b8a
2 changed files with 36 additions and 13 deletions

View File

@@ -133,10 +133,39 @@ def test_send_notification_with_placeholders_replaced(notify_api, sample_email_t
assert response_data['subject'] == 'Jo'
def test_send_notification_with_placeholders_replaced_with_list(
@pytest.mark.parametrize('personalisation, expected_body, expected_subject', [
(
['Jo', 'John', 'Josephine'],
(
'Hello \n\n'
'* Jo\n'
'* John\n'
'* Josephine\n'
'This is an email from GOV.\u200BUK'
),
'Jo, John and Josephine',
),
(
6,
(
'Hello 6\n'
'This is an email from GOV.\u200BUK'
),
'6',
),
pytest.mark.xfail((
None,
('we consider None equivalent to missing personalisation'),
'',
)),
])
def test_send_notification_with_placeholders_replaced_with_unusual_types(
client,
sample_email_template_with_placeholders,
mocker
mocker,
personalisation,
expected_body,
expected_subject,
):
mocked = mocker.patch('app.celery.provider_tasks.deliver_email.apply_async')
@@ -147,7 +176,7 @@ def test_send_notification_with_placeholders_replaced_with_list(
'to': 'ok@ok.com',
'template': str(sample_email_template_with_placeholders.id),
'personalisation': {
'name': ['Jo', 'John', 'Josephine']
'name': personalisation
}
}
),
@@ -157,16 +186,10 @@ def test_send_notification_with_placeholders_replaced_with_list(
]
)
response_data = json.loads(response.data)['data']
assert response.status_code == 201
assert response_data['body'] == (
'Hello \n\n'
'* Jo\n'
'* John\n'
'* Josephine\n'
'This is an email from GOV.\u200BUK'
)
assert response_data['subject'] == 'Jo, John and Josephine'
response_data = json.loads(response.data)['data']
assert response_data['body'] == expected_body
assert response_data['subject'] == expected_subject
def test_should_not_send_notification_for_archived_template(notify_api, sample_template):