2017-04-20 10:40:15 +01:00
|
|
|
import pytest
|
|
|
|
|
|
|
|
|
|
from functools import partial
|
2017-04-10 18:12:00 +01:00
|
|
|
from unittest.mock import Mock
|
|
|
|
|
from notifications_utils.template import LetterPreviewTemplate
|
|
|
|
|
|
|
|
|
|
from app.template_previews import TemplatePreview
|
|
|
|
|
|
|
|
|
|
|
2017-04-20 10:40:15 +01:00
|
|
|
@pytest.mark.parametrize('partial_call, expected_page_argument', [
|
|
|
|
|
(partial(TemplatePreview.from_utils_template), None),
|
|
|
|
|
(partial(TemplatePreview.from_utils_template, page=99), 99),
|
|
|
|
|
])
|
|
|
|
|
def test_from_utils_template_calls_through(
|
|
|
|
|
mocker,
|
|
|
|
|
mock_get_service_letter_template,
|
|
|
|
|
partial_call,
|
|
|
|
|
expected_page_argument,
|
|
|
|
|
):
|
2017-04-10 18:12:00 +01:00
|
|
|
mock_from_db = mocker.patch('app.template_previews.TemplatePreview.from_database_object')
|
|
|
|
|
template = LetterPreviewTemplate(mock_get_service_letter_template(None, None)['data'])
|
|
|
|
|
|
2017-04-20 10:40:15 +01:00
|
|
|
ret = partial_call(template, 'foo')
|
2017-04-10 18:12:00 +01:00
|
|
|
|
|
|
|
|
assert ret == mock_from_db.return_value
|
2017-04-20 10:40:15 +01:00
|
|
|
mock_from_db.assert_called_once_with(template._template, 'foo', template.values, page=expected_page_argument)
|
2017-04-10 18:12:00 +01:00
|
|
|
|
|
|
|
|
|
2017-04-20 10:40:15 +01:00
|
|
|
@pytest.mark.parametrize('partial_call, expected_url', [
|
|
|
|
|
(
|
|
|
|
|
partial(TemplatePreview.from_database_object, filetype='bar'),
|
|
|
|
|
'http://localhost:6013/preview.bar',
|
|
|
|
|
),
|
|
|
|
|
(
|
|
|
|
|
partial(TemplatePreview.from_database_object, filetype='baz'),
|
|
|
|
|
'http://localhost:6013/preview.baz',
|
|
|
|
|
),
|
|
|
|
|
(
|
|
|
|
|
partial(TemplatePreview.from_database_object, filetype='bar', page=99),
|
|
|
|
|
'http://localhost:6013/preview.bar?page=99',
|
|
|
|
|
),
|
|
|
|
|
])
|
|
|
|
|
def test_from_database_object_makes_request(
|
|
|
|
|
mocker,
|
|
|
|
|
client,
|
|
|
|
|
partial_call,
|
|
|
|
|
expected_url,
|
|
|
|
|
):
|
2017-04-10 18:12:00 +01:00
|
|
|
resp = Mock(content='a', status_code='b', headers={'c': 'd'})
|
|
|
|
|
request_mock = mocker.patch('app.template_previews.requests.post', return_value=resp)
|
|
|
|
|
mocker.patch('app.template_previews.current_service', __getitem__=Mock(return_value='123'))
|
|
|
|
|
|
2017-04-20 10:40:15 +01:00
|
|
|
ret = partial_call(template='foo')
|
2017-04-10 18:12:00 +01:00
|
|
|
|
|
|
|
|
assert ret[0] == 'a'
|
|
|
|
|
assert ret[1] == 'b'
|
|
|
|
|
assert list(ret[2]) == [('c', 'd')]
|
2017-04-20 10:40:15 +01:00
|
|
|
|
2017-04-10 18:12:00 +01:00
|
|
|
data = {
|
|
|
|
|
'letter_contact_block': '123',
|
|
|
|
|
'template': 'foo',
|
|
|
|
|
'values': None
|
|
|
|
|
}
|
|
|
|
|
headers = {'Authorization': 'Token my-secret-key'}
|
|
|
|
|
|
2017-04-20 10:40:15 +01:00
|
|
|
request_mock.assert_called_once_with(expected_url, json=data, headers=headers)
|