mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-02-05 10:53:28 -05:00
Updated copy on the page.
Added unit tests. Added error when file is too big.
This commit is contained in:
@@ -280,6 +280,14 @@ def letter_validation_preview(from_platform_admin):
|
||||
), 400
|
||||
|
||||
try:
|
||||
if len(pdf_file.read()) > (2 * 1024 * 1024):
|
||||
return render_template(
|
||||
view_location,
|
||||
form=form,
|
||||
message="File must be less than 2MB",
|
||||
pages=pages, result=result
|
||||
), 400
|
||||
pdf_file.seek(0)
|
||||
response = validate_letter(pdf_file)
|
||||
response.raise_for_status()
|
||||
if response.status_code == 200:
|
||||
|
||||
@@ -5,6 +5,11 @@
|
||||
{% from "components/page-footer.html" import page_footer %}
|
||||
|
||||
{% from "components/form.html" import form_wrapper %}
|
||||
|
||||
{% block service_page_title %}
|
||||
Letter validation preview
|
||||
{% endblock %}
|
||||
|
||||
{% block maincolumn_content %}
|
||||
|
||||
<div class="grid-row">
|
||||
@@ -15,14 +20,29 @@
|
||||
{{ banner(message, 'dangerous')}}
|
||||
{% endif %}
|
||||
|
||||
<h1 class="heading-large">Letter Validation Preview</h1>
|
||||
<h1 class="heading-large">Letter validation preview</h1>
|
||||
<div class="bottom-gutter">
|
||||
{{ file_upload(
|
||||
form.file,
|
||||
action = url_for('main.services_letter_validation_preview', service_id=current_service.id),
|
||||
button_text='Upload a PDF document',
|
||||
action = url_for('main.service_letter_validation_preview', service_id=current_service.id),
|
||||
button_text='Choose a file',
|
||||
)}}
|
||||
</div>
|
||||
{%if not pages %}
|
||||
<div>
|
||||
<h1 class="heading-medium">Check your file meets the letter specification </h1>
|
||||
<p>Your file must be:
|
||||
<li>a PDF</li>
|
||||
<li>no more than 10 pages long</li>
|
||||
<li>less than 2 MB</li>
|
||||
</p>
|
||||
<p>The content of your letter mut appear inside the printable area.</p>
|
||||
<p>
|
||||
<a href="https://docs.notifications.service.gov.uk/documentation/images/notify-pdf-letter-spec-v2.3.pdf">
|
||||
Download the letter specification</a> for more information.
|
||||
</p>
|
||||
</div>
|
||||
{% endif%}
|
||||
</div>
|
||||
<div class="column-whole template-container" >
|
||||
|
||||
|
||||
@@ -761,6 +761,36 @@ def test_platform_admin_submit_empty_returned_letters(mocker, client, platform_a
|
||||
assert "Can’t be empty" in response.get_data(as_text=True)
|
||||
|
||||
|
||||
def test_service_letter_validation_preview_renders_correctly(
|
||||
client_request,
|
||||
mock_has_no_jobs
|
||||
|
||||
):
|
||||
page = client_request.get('main.service_letter_validation_preview', service_id="service_1")
|
||||
|
||||
assert page.find('h1').text.strip() == "Letter validation preview"
|
||||
assert page.find_all('input', class_='file-upload-field')
|
||||
|
||||
|
||||
def test_service_letter_validation_preview_returns_400_if_file_is_too_big(
|
||||
client_request,
|
||||
mock_has_no_jobs,
|
||||
mocker
|
||||
|
||||
):
|
||||
with open('tests/test_pdf_files/big.pdf', 'rb') as file:
|
||||
page = client_request.post('main.service_letter_validation_preview', service_id="service_1",
|
||||
_data=dict(
|
||||
pdf_file=file,
|
||||
),
|
||||
content_type='multipart/form-data',
|
||||
_follow_redirects=True)
|
||||
|
||||
assert page.find('h1').text.strip() == "Letter validation preview"
|
||||
assert page.find_all('input', class_='file-upload-field')
|
||||
page.find('span', class_='error-message').text.strip() == "File must be less than 2MB"
|
||||
|
||||
|
||||
def test_letter_validation_preview_renders_correctly(mocker, client, platform_admin_user):
|
||||
mock_get_user(mocker, user=platform_admin_user)
|
||||
client.login(platform_admin_user)
|
||||
|
||||
BIN
tests/test_pdf_files/big.pdf
Normal file
BIN
tests/test_pdf_files/big.pdf
Normal file
Binary file not shown.
Reference in New Issue
Block a user