From b0ffca27743874a5454994ffba0ec18e78f78c9d Mon Sep 17 00:00:00 2001 From: Katie Smith Date: Mon, 21 Oct 2019 11:10:27 +0100 Subject: [PATCH] Only show overlay when content is outside the printable area The overlay was showing for any invalid pdf - we only want to show the overlay for invalid pdf files where there is content outside the printable area. --- app/main/views/uploads.py | 2 +- tests/app/main/views/test_uploads.py | 50 +++++++++++++++++++++++++++- 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/app/main/views/uploads.py b/app/main/views/uploads.py index 7b2dc65ae..4709b58b4 100644 --- a/app/main/views/uploads.py +++ b/app/main/views/uploads.py @@ -181,7 +181,7 @@ def view_letter_upload_as_preview(service_id, file_id): page = request.args.get('page') - if metadata['status'] == 'invalid': + if metadata.get('message') == 'content-outside-printable-area': return TemplatePreview.from_invalid_pdf_file(pdf_file, page) else: return TemplatePreview.from_valid_pdf_file(pdf_file, page) diff --git a/tests/app/main/views/test_uploads.py b/tests/app/main/views/test_uploads.py index aa5b377fe..722c53806 100644 --- a/tests/app/main/views/test_uploads.py +++ b/tests/app/main/views/test_uploads.py @@ -1,7 +1,7 @@ from unittest.mock import Mock import pytest -from flask import url_for +from flask import make_response, url_for from requests import RequestException from app.utils import normalize_spaces @@ -300,6 +300,54 @@ def test_uploaded_letter_preview(mocker, client_request): assert page.find('div', class_='letter-sent') +def test_uploaded_letter_preview_image_shows_overlay_when_content_outside_printable_area( + mocker, + logged_in_client, + mock_get_service, +): + mocker.patch( + 'app.main.views.uploads.get_letter_pdf_and_metadata', + return_value=('pdf_file', {'message': 'content-outside-printable-area'}) + ) + template_preview_mock = mocker.patch( + 'app.main.views.uploads.TemplatePreview.from_invalid_pdf_file', + return_value=make_response('page.html', 200)) + + logged_in_client.get( + 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') + + +@pytest.mark.parametrize( + 'metadata', [ + {'message': 'letter-not-a4-portrait-oriented'}, + {'message': 'letter-too-long'}, + {}, + ] +) +def test_uploaded_letter_preview_image_does_not_show_overlay_if_no_content_outside_printable_area( + mocker, + logged_in_client, + mock_get_service, + metadata, +): + mocker.patch( + 'app.main.views.uploads.get_letter_pdf_and_metadata', + return_value=('pdf_file', metadata) + ) + template_preview_mock = mocker.patch( + 'app.main.views.uploads.TemplatePreview.from_valid_pdf_file', + return_value=make_response('page.html', 200)) + + logged_in_client.get( + 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') + + def test_send_uploaded_letter_sends_letter_and_redirects_to_notification_page(mocker, service_one, client_request): metadata = {'filename': 'my_file.pdf', 'page_count': '1', 'status': 'valid'}