mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-05 23:58:25 -04:00
Merge pull request #3257 from alphagov/overlay-only-bad-pages
Only put the overlay on bad pages
This commit is contained in:
@@ -241,11 +241,19 @@ def uploaded_letter_preview(service_id, file_id):
|
|||||||
@main.route("/services/<uuid:service_id>/preview-letter-image/<uuid:file_id>")
|
@main.route("/services/<uuid:service_id>/preview-letter-image/<uuid:file_id>")
|
||||||
@user_has_permissions('send_messages')
|
@user_has_permissions('send_messages')
|
||||||
def view_letter_upload_as_preview(service_id, file_id):
|
def view_letter_upload_as_preview(service_id, file_id):
|
||||||
|
|
||||||
|
try:
|
||||||
|
page = int(request.args.get('page'))
|
||||||
|
except ValueError:
|
||||||
|
abort(400)
|
||||||
|
|
||||||
pdf_file, metadata = get_letter_pdf_and_metadata(service_id, file_id)
|
pdf_file, metadata = get_letter_pdf_and_metadata(service_id, file_id)
|
||||||
|
invalid_pages = json.loads(metadata.get('invalid_pages', '[]'))
|
||||||
|
|
||||||
page = request.args.get('page')
|
if (
|
||||||
|
metadata.get('message') == 'content-outside-printable-area' and
|
||||||
if metadata.get('message') == 'content-outside-printable-area':
|
page in invalid_pages
|
||||||
|
):
|
||||||
return TemplatePreview.from_invalid_pdf_file(pdf_file, page)
|
return TemplatePreview.from_invalid_pdf_file(pdf_file, page)
|
||||||
else:
|
else:
|
||||||
return TemplatePreview.from_valid_pdf_file(pdf_file, page)
|
return TemplatePreview.from_valid_pdf_file(pdf_file, page)
|
||||||
|
|||||||
@@ -409,25 +409,52 @@ def test_uploaded_letter_preview_does_not_show_send_button_if_service_in_trial_m
|
|||||||
assert not page.find('button', {'type': 'submit'})
|
assert not page.find('button', {'type': 'submit'})
|
||||||
|
|
||||||
|
|
||||||
def test_uploaded_letter_preview_image_shows_overlay_when_content_outside_printable_area(
|
@pytest.mark.parametrize('invalid_pages, page_requested, overlay_expected', (
|
||||||
|
('[1, 2]', 1, True),
|
||||||
|
('[1, 2]', 2, True),
|
||||||
|
('[1, 2]', 3, False),
|
||||||
|
('[]', 1, False),
|
||||||
|
))
|
||||||
|
def test_uploaded_letter_preview_image_shows_overlay_when_content_outside_printable_area_on_a_page(
|
||||||
mocker,
|
mocker,
|
||||||
logged_in_client,
|
logged_in_client,
|
||||||
mock_get_service,
|
mock_get_service,
|
||||||
fake_uuid,
|
fake_uuid,
|
||||||
|
invalid_pages,
|
||||||
|
page_requested,
|
||||||
|
overlay_expected,
|
||||||
):
|
):
|
||||||
mocker.patch(
|
mocker.patch(
|
||||||
'app.main.views.uploads.get_letter_pdf_and_metadata',
|
'app.main.views.uploads.get_letter_pdf_and_metadata',
|
||||||
return_value=('pdf_file', {'message': 'content-outside-printable-area'})
|
return_value=('pdf_file', {
|
||||||
|
'message': 'content-outside-printable-area',
|
||||||
|
'invalid_pages': invalid_pages,
|
||||||
|
})
|
||||||
)
|
)
|
||||||
template_preview_mock = mocker.patch(
|
template_preview_mock_valid = mocker.patch(
|
||||||
|
'app.main.views.uploads.TemplatePreview.from_valid_pdf_file',
|
||||||
|
return_value=make_response('page.html', 200)
|
||||||
|
)
|
||||||
|
template_preview_mock_invalid = mocker.patch(
|
||||||
'app.main.views.uploads.TemplatePreview.from_invalid_pdf_file',
|
'app.main.views.uploads.TemplatePreview.from_invalid_pdf_file',
|
||||||
return_value=make_response('page.html', 200))
|
return_value=make_response('page.html', 200)
|
||||||
|
)
|
||||||
|
|
||||||
logged_in_client.get(
|
logged_in_client.get(
|
||||||
url_for('main.view_letter_upload_as_preview', file_id=fake_uuid, service_id=SERVICE_ONE_ID, page=1)
|
url_for(
|
||||||
|
'main.view_letter_upload_as_preview',
|
||||||
|
file_id=fake_uuid,
|
||||||
|
service_id=SERVICE_ONE_ID,
|
||||||
|
page=page_requested,
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
template_preview_mock.assert_called_once_with('pdf_file', '1')
|
if overlay_expected:
|
||||||
|
template_preview_mock_invalid.assert_called_once_with('pdf_file', page_requested)
|
||||||
|
assert template_preview_mock_valid.called is False
|
||||||
|
else:
|
||||||
|
template_preview_mock_valid.assert_called_once_with('pdf_file', page_requested)
|
||||||
|
assert template_preview_mock_invalid.called is False
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
@@ -456,7 +483,20 @@ def test_uploaded_letter_preview_image_does_not_show_overlay_if_no_content_outsi
|
|||||||
url_for('main.view_letter_upload_as_preview', file_id=fake_uuid, service_id=SERVICE_ONE_ID, page=1)
|
url_for('main.view_letter_upload_as_preview', file_id=fake_uuid, service_id=SERVICE_ONE_ID, page=1)
|
||||||
)
|
)
|
||||||
|
|
||||||
template_preview_mock.assert_called_once_with('pdf_file', '1')
|
template_preview_mock.assert_called_once_with('pdf_file', 1)
|
||||||
|
|
||||||
|
|
||||||
|
def test_uploaded_letter_preview_image_400s_for_bad_page_type(
|
||||||
|
client_request,
|
||||||
|
fake_uuid,
|
||||||
|
):
|
||||||
|
client_request.get(
|
||||||
|
'main.view_letter_upload_as_preview',
|
||||||
|
file_id=fake_uuid,
|
||||||
|
service_id=SERVICE_ONE_ID,
|
||||||
|
page='foo',
|
||||||
|
_expected_status=400,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_send_uploaded_letter_sends_letter_and_redirects_to_notification_page(mocker, service_one, client_request):
|
def test_send_uploaded_letter_sends_letter_and_redirects_to_notification_page(mocker, service_one, client_request):
|
||||||
|
|||||||
Reference in New Issue
Block a user