mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-06-21 13:43:14 -04:00
Show dynamic message when letter fails validation in validation checker - part 2
This commit is contained in:
@@ -399,7 +399,7 @@ def service_letter_validation_preview(service_id):
|
||||
|
||||
|
||||
def letter_validation_preview(from_platform_admin):
|
||||
message, pages, result = None, [], None
|
||||
message, pages, passed_validation, error_code = None, [], None, None
|
||||
form = PDFUploadForm()
|
||||
|
||||
view_location = 'views/platform-admin/letter-validation-preview.html' \
|
||||
@@ -412,7 +412,8 @@ def letter_validation_preview(from_platform_admin):
|
||||
if not virus_free:
|
||||
return render_template(
|
||||
view_location,
|
||||
form=form, message="Document did not pass the virus scan", pages=pages, result=result
|
||||
form=form, message="Document did not pass the virus scan",
|
||||
pages=pages, passed_validation=passed_validation
|
||||
), 400
|
||||
|
||||
try:
|
||||
@@ -421,7 +422,7 @@ def letter_validation_preview(from_platform_admin):
|
||||
view_location,
|
||||
form=form,
|
||||
message="File must be less than 2MB",
|
||||
pages=pages, result=result
|
||||
pages=pages, passed_validation=passed_validation
|
||||
), 400
|
||||
pdf_file.seek(0)
|
||||
response = validate_letter(pdf_file)
|
||||
@@ -436,6 +437,7 @@ def letter_validation_preview(from_platform_admin):
|
||||
passed_validation = False
|
||||
|
||||
if not passed_validation:
|
||||
error_code = message
|
||||
message = get_letter_validation_error(
|
||||
message, invalid_pages=invalid_pages, page_count=page_count
|
||||
)
|
||||
@@ -444,14 +446,14 @@ def letter_validation_preview(from_platform_admin):
|
||||
message = "Something was wrong with the file you tried to upload. Please upload a valid PDF file."
|
||||
return render_template(
|
||||
view_location,
|
||||
form=form, message=message, pages=pages, result=result
|
||||
form=form, message=message, pages=pages, passed_validation=passed_validation
|
||||
), 400
|
||||
else:
|
||||
raise error
|
||||
|
||||
return render_template(
|
||||
view_location,
|
||||
form=form, message=message, pages=pages, result=result
|
||||
form=form, message=message, pages=pages, passed_validation=passed_validation, error_code=error_code
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<h1 class='banner-title' data-module="track-error" data-error-type="Trying to send a letter that's too long" data-error-label="service_id: {{ current_service.id }}">
|
||||
<h1 h1 class="banner-title" data-module="track-error" data-error-type="letter-too-long" data-error-label="precompiled letter validation failed for service_id: {{ current_service.id }}">
|
||||
Your letter is too long
|
||||
</h1>
|
||||
<p>
|
||||
|
||||
@@ -748,9 +748,12 @@ def test_letter_validation_preview_renders_correctly(mocker, platform_admin_clie
|
||||
assert page.find_all('input', class_='file-upload-field')
|
||||
|
||||
|
||||
@pytest.mark.parametrize("result,expected_class", [(True, 'banner-with-tick'), (False, "banner-dangerous")])
|
||||
@pytest.mark.parametrize("passed_validation,message,expected_class", [
|
||||
(True, 'Your PDF passed the layout check', 'banner-with-tick'),
|
||||
(False, 'content-otside-printable-area', "banner-dangerous")
|
||||
])
|
||||
def test_letter_validation_preview_calls_template_preview_when_data_correct_and_displays_correct_message(
|
||||
mocker, platform_admin_client, result, expected_class
|
||||
mocker, platform_admin_client, passed_validation, message, expected_class
|
||||
):
|
||||
endpoint = '{}/precompiled/validate?include_preview=true'.format(current_app.config['TEMPLATE_PREVIEW_API_HOST'])
|
||||
mocker.patch('app.main.views.platform_admin.antivirus_client.scan', return_value=True)
|
||||
@@ -759,7 +762,7 @@ def test_letter_validation_preview_calls_template_preview_when_data_correct_and_
|
||||
rmock.request(
|
||||
"POST",
|
||||
endpoint,
|
||||
json={"pages": [], "message": "bazinga!", "result": result},
|
||||
json={"pages": [], "message": message, "result": passed_validation},
|
||||
status_code=200
|
||||
)
|
||||
with open('tests/test_pdf_files/multi_page_pdf.pdf', 'rb') as file:
|
||||
@@ -773,7 +776,10 @@ def test_letter_validation_preview_calls_template_preview_when_data_correct_and_
|
||||
assert rmock.request_history[0].url == endpoint
|
||||
|
||||
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
|
||||
assert page.find('div', class_=expected_class).text.strip() == "bazinga!"
|
||||
if passed_validation:
|
||||
assert page.find('div', class_=expected_class).text.strip() == message
|
||||
else:
|
||||
assert page.find('div', class_=expected_class).find('h1', {"data-error-type": message})
|
||||
|
||||
|
||||
def test_letter_validation_preview_doesnt_call_template_preview_when_no_file(mocker, platform_admin_client):
|
||||
|
||||
@@ -2778,7 +2778,7 @@ def test_check_messages_does_not_allow_to_send_letter_longer_than_10_pages(
|
||||
upload_id=fake_uuid,
|
||||
_test_page_title=False,
|
||||
)
|
||||
assert page.find('h1', {"data-error-type": "Trying to send a letter that's too long"})
|
||||
assert page.find('h1', {"data-error-type": "letter-too-long"})
|
||||
|
||||
assert len(page.select('.letter img')) == 10 # if letter longer than 10 pages, only 10 first pages are displayed
|
||||
assert not page.select('[type=submit]')
|
||||
@@ -3148,7 +3148,7 @@ def test_send_one_off_letter_errors_if_letter_longer_than_10_pages(
|
||||
_test_page_title=False,
|
||||
)
|
||||
|
||||
assert page.find('h1', {"data-error-type": "Trying to send a letter that's too long"})
|
||||
assert page.find('h1', {"data-error-type": "letter-too-long"})
|
||||
assert len(page.select('.letter img')) == 10
|
||||
|
||||
assert not page.select('[type=submit]')
|
||||
|
||||
@@ -543,7 +543,7 @@ def test_view_letter_template_does_not_display_send_button_if_template_over_10_p
|
||||
)
|
||||
|
||||
assert "Send" not in page.text
|
||||
assert page.find('h1', {"data-error-type": "Trying to send a letter that's too long"})
|
||||
assert page.find('h1', {"data-error-type": "letter-too-long"})
|
||||
|
||||
|
||||
def test_edit_letter_template_postage_page_displays_correctly(
|
||||
|
||||
Reference in New Issue
Block a user