Merge pull request #1237 from alphagov/multi-page-previews

Show all pages of a letter in the app
This commit is contained in:
Chris Hill-Scott
2017-04-25 15:33:22 +01:00
committed by GitHub
5 changed files with 60 additions and 16 deletions

View File

@@ -1,30 +1,61 @@
import pytest
from functools import partial
from unittest.mock import Mock
from notifications_utils.template import LetterPreviewTemplate
from app.template_previews import TemplatePreview
def test_from_utils_template_calls_through(mocker, mock_get_service_letter_template):
@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,
):
mock_from_db = mocker.patch('app.template_previews.TemplatePreview.from_database_object')
template = LetterPreviewTemplate(mock_get_service_letter_template(None, None)['data'])
ret = TemplatePreview.from_utils_template(template, 'foo')
ret = partial_call(template, 'foo')
assert ret == mock_from_db.return_value
mock_from_db.assert_called_once_with(template._template, 'foo', template.values)
mock_from_db.assert_called_once_with(template._template, 'foo', template.values, page=expected_page_argument)
def test_from_database_object_makes_request(mocker, client):
@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,
):
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'))
ret = TemplatePreview.from_database_object(template='foo', filetype='bar')
ret = partial_call(template='foo')
assert ret[0] == 'a'
assert ret[1] == 'b'
assert list(ret[2]) == [('c', 'd')]
url = 'http://localhost:6013/preview.bar'
data = {
'letter_contact_block': '123',
'template': 'foo',
@@ -33,4 +64,4 @@ def test_from_database_object_makes_request(mocker, client):
}
headers = {'Authorization': 'Token my-secret-key'}
request_mock.assert_called_once_with(url, json=data, headers=headers)
request_mock.assert_called_once_with(expected_url, json=data, headers=headers)