mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-19 14:09:20 -04:00
Merge pull request #1224 from alphagov/letters-from-a-service
Letters from template-preview service
This commit is contained in:
@@ -2,14 +2,13 @@ import uuid
|
||||
from io import BytesIO
|
||||
from os import path
|
||||
from glob import glob
|
||||
import re
|
||||
from itertools import repeat
|
||||
from functools import partial
|
||||
from unittest.mock import patch
|
||||
|
||||
import pytest
|
||||
from bs4 import BeautifulSoup
|
||||
from flask import url_for
|
||||
from notifications_utils.template import LetterPreviewTemplate
|
||||
|
||||
from app.main.views.send import get_check_messages_back_url
|
||||
|
||||
@@ -524,18 +523,9 @@ def test_can_start_letters_job(
|
||||
assert response.status_code == 302
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
'view, expected_content_type',
|
||||
[
|
||||
('.check_messages_as_pdf', 'application/pdf'),
|
||||
('.check_messages_as_png', 'image/png'),
|
||||
]
|
||||
)
|
||||
@patch('app.utils.LetterPreviewTemplate.jinja_template.render', return_value='')
|
||||
@pytest.mark.parametrize('filetype', ['pdf', 'png'])
|
||||
def test_should_show_preview_letter_message(
|
||||
mock_letter_preview,
|
||||
view,
|
||||
expected_content_type,
|
||||
filetype,
|
||||
logged_in_platform_admin_client,
|
||||
mock_get_service_letter_template,
|
||||
mock_get_users_by_service,
|
||||
@@ -554,6 +544,10 @@ def test_should_show_preview_letter_message(
|
||||
['123 street, abc123']
|
||||
)
|
||||
)
|
||||
mocked_preview = mocker.patch(
|
||||
'app.main.views.send.TemplatePreview.from_utils_template',
|
||||
return_value='foo'
|
||||
)
|
||||
|
||||
service_id = service_one['id']
|
||||
template_id = fake_uuid
|
||||
@@ -565,18 +559,41 @@ def test_should_show_preview_letter_message(
|
||||
'valid': True
|
||||
}
|
||||
response = logged_in_platform_admin_client.get(
|
||||
url_for(view, service_id=service_id, template_type='letter', upload_id=fake_uuid)
|
||||
url_for(
|
||||
'main.check_messages_preview',
|
||||
service_id=service_id,
|
||||
template_type='letter',
|
||||
upload_id=fake_uuid,
|
||||
filetype=filetype
|
||||
)
|
||||
)
|
||||
|
||||
assert response.status_code == 200
|
||||
assert response.content_type == expected_content_type
|
||||
mock_get_service_letter_template.assert_called_with(service_id, template_id)
|
||||
assert mock_letter_preview.call_args[0][0]['subject'] == (
|
||||
'Subject'
|
||||
)
|
||||
assert mock_letter_preview.call_args[0][0]['message'] == (
|
||||
'<p>Template <em>content</em> with & entity</p>'
|
||||
|
||||
assert response.status_code == 200
|
||||
assert response.get_data(as_text=True) == 'foo'
|
||||
assert mocked_preview.call_args[0][0].id == template_id
|
||||
assert type(mocked_preview.call_args[0][0]) == LetterPreviewTemplate
|
||||
assert mocked_preview.call_args[0][1] == filetype
|
||||
|
||||
|
||||
def test_dont_show_preview_letter_templates_for_bad_filetype(
|
||||
logged_in_client,
|
||||
mock_get_service_template,
|
||||
service_one,
|
||||
fake_uuid
|
||||
):
|
||||
resp = logged_in_client.get(
|
||||
url_for(
|
||||
'main.check_messages_preview',
|
||||
service_id=service_one['id'],
|
||||
template_type='letter',
|
||||
upload_id=fake_uuid,
|
||||
filetype='blah'
|
||||
)
|
||||
)
|
||||
assert resp.status_code == 404
|
||||
assert mock_get_service_template.called is False
|
||||
|
||||
|
||||
def test_check_messages_should_revalidate_file_when_uploading_file(
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
from itertools import repeat
|
||||
from datetime import datetime
|
||||
from unittest.mock import Mock, patch, ANY
|
||||
from unittest.mock import Mock, ANY
|
||||
|
||||
import pytest
|
||||
from bs4 import BeautifulSoup
|
||||
@@ -148,44 +147,60 @@ def test_should_show_page_template_with_priority_select_if_platform_admin(
|
||||
mock_get_service_template.assert_called_with('1234', template_id)
|
||||
|
||||
|
||||
@pytest.mark.parametrize('view_suffix, expected_content_type', [
|
||||
('as_pdf', 'application/pdf'),
|
||||
('as_png', 'image/png'),
|
||||
])
|
||||
@pytest.mark.parametrize('filetype', ['pdf', 'png'])
|
||||
@pytest.mark.parametrize('view, extra_view_args', [
|
||||
('.view_letter_template', {}),
|
||||
('.view_template_version', {'version': 1}),
|
||||
('.view_letter_template_preview', {}),
|
||||
('.view_template_version_preview', {'version': 1}),
|
||||
])
|
||||
@patch('app.main.views.templates.LetterPreviewTemplate.jinja_template.render', return_value='foo')
|
||||
def test_should_show_preview_letter_templates(
|
||||
mock_letter_preview,
|
||||
view,
|
||||
extra_view_args,
|
||||
view_suffix,
|
||||
expected_content_type,
|
||||
filetype,
|
||||
logged_in_client,
|
||||
mock_get_service_email_template,
|
||||
mock_get_user_by_email,
|
||||
service_one,
|
||||
fake_uuid
|
||||
fake_uuid,
|
||||
mocker
|
||||
):
|
||||
mocked_preview = mocker.patch(
|
||||
'app.main.views.templates.TemplatePreview.from_database_object',
|
||||
return_value='foo'
|
||||
)
|
||||
|
||||
service_id, template_id = service_one['id'], fake_uuid
|
||||
|
||||
response = logged_in_client.get(url_for(
|
||||
'{}_{}'.format(view, view_suffix),
|
||||
view,
|
||||
service_id=service_id,
|
||||
template_id=template_id,
|
||||
filetype=filetype,
|
||||
**extra_view_args
|
||||
))
|
||||
|
||||
assert response.status_code == 200
|
||||
assert response.content_type == expected_content_type
|
||||
assert response.get_data(as_text=True) == 'foo'
|
||||
mock_get_service_email_template.assert_called_with(service_id, template_id, **extra_view_args)
|
||||
assert mock_letter_preview.call_args[0][0]['subject'] == (
|
||||
"Your <span class='placeholder'>((thing))</span> is due soon"
|
||||
)
|
||||
assert mock_letter_preview.call_args[0][0]['message'] == (
|
||||
"<p>Your vehicle tax expires on <span class='placeholder'>((date))</span></p>"
|
||||
assert mocked_preview.call_args[0][0]['id'] == template_id
|
||||
assert mocked_preview.call_args[0][0]['service'] == service_id
|
||||
assert mocked_preview.call_args[0][1] == filetype
|
||||
|
||||
|
||||
def test_dont_show_preview_letter_templates_for_bad_filetype(
|
||||
logged_in_client,
|
||||
mock_get_service_template,
|
||||
service_one,
|
||||
fake_uuid
|
||||
):
|
||||
resp = logged_in_client.get(
|
||||
url_for(
|
||||
'.view_letter_template_preview',
|
||||
service_id=service_one['id'],
|
||||
template_id=fake_uuid,
|
||||
filetype='blah'
|
||||
)
|
||||
)
|
||||
assert resp.status_code == 404
|
||||
assert mock_get_service_template.called is False
|
||||
|
||||
|
||||
def test_should_redirect_when_saving_a_template(
|
||||
|
||||
Reference in New Issue
Block a user