From 02beccd066bc9254501daa3800ae5a646fdcafee Mon Sep 17 00:00:00 2001 From: Pea Tyczynska Date: Wed, 27 Nov 2019 13:27:52 +0000 Subject: [PATCH] Add re-upload button and back link to the preview page Re-upload button is only shown if file failed validation. Change wording of re-upload buttons Make test we test right buttons on letter upload preview page Also remove double backlink --- app/main/views/uploads.py | 3 +++ app/templates/views/check/row-errors.html | 2 +- app/templates/views/uploads/preview.html | 17 +++++++++++++++-- tests/app/main/views/test_send.py | 2 +- tests/app/main/views/test_uploads.py | 7 ++++++- 5 files changed, 26 insertions(+), 5 deletions(-) diff --git a/app/main/views/uploads.py b/app/main/views/uploads.py index fbb79125c..3b12b548f 100644 --- a/app/main/views/uploads.py +++ b/app/main/views/uploads.py @@ -145,6 +145,8 @@ def _get_error_from_upload_form(form_errors): @main.route("/services//preview-letter/") @user_has_permissions('send_messages') def uploaded_letter_preview(service_id, file_id): + re_upload_form = PDFUploadForm() + metadata = get_letter_metadata(service_id, file_id) original_filename = metadata.get('filename') page_count = metadata.get('page_count') @@ -186,6 +188,7 @@ def uploaded_letter_preview(service_id, file_id): error_code=error_shortcode, form=form, recipient=recipient, + re_upload_form=re_upload_form ) diff --git a/app/templates/views/check/row-errors.html b/app/templates/views/check/row-errors.html index 1bd71859e..98c55085b 100644 --- a/app/templates/views/check/row-errors.html +++ b/app/templates/views/check/row-errors.html @@ -52,7 +52,7 @@ {{ file_upload( form.file, action=url_for('.send_messages', service_id=current_service.id, template_id=template.id), - button_text='Re-upload your file' + button_text='Upload your file again' ) }} Back to top diff --git a/app/templates/views/uploads/preview.html b/app/templates/views/uploads/preview.html index 302785693..3a941b15c 100644 --- a/app/templates/views/uploads/preview.html +++ b/app/templates/views/uploads/preview.html @@ -3,14 +3,28 @@ {% from "components/page-header.html" import page_header %} {% from "components/page-footer.html" import page_footer %} {% from "components/radios.html" import radios %} +{% from "components/page-header.html" import govuk_back_link %} +{% from "components/file-upload.html" import file_upload %} {% block service_page_title %} {{ original_filename }} {% endblock %} {% block maincolumn_content %} + {{ govuk_back_link(url_for('main.upload_letter', service_id=current_service.id)) }} + {% if status == 'invalid' and message %} {% include "partials/check/letter-validation-failed-banner.html" %} +
+
+ {{ file_upload( + re_upload_form.file, + action=url_for('main.upload_letter', service_id=current_service.id), + button_text='Upload your file again' + ) }} +
+ Back to top +
{% elif current_service.trial_mode %} {% call banner_wrapper(type='dangerous') %} {% with @@ -21,8 +35,7 @@ {% endcall %} {% else %} {{ page_header( - original_filename, - back_link=url_for('main.upload_letter', service_id=current_service.id) + original_filename ) }} {% endif %} diff --git a/tests/app/main/views/test_send.py b/tests/app/main/views/test_send.py index 8846ebdca..2e7529cd1 100644 --- a/tests/app/main/views/test_send.py +++ b/tests/app/main/views/test_send.py @@ -417,7 +417,7 @@ def test_upload_csv_file_with_errors_shows_check_page_with_errors( assert 'There is a problem with invalid.csv' in content assert '+447700900986' in content assert 'Missing' in content - assert 'Re-upload your file' in content + assert 'Upload your file again' in content @pytest.mark.parametrize('file_contents, expected_error,', [ diff --git a/tests/app/main/views/test_uploads.py b/tests/app/main/views/test_uploads.py index 269efcd2f..c967c4e1f 100644 --- a/tests/app/main/views/test_uploads.py +++ b/tests/app/main/views/test_uploads.py @@ -265,7 +265,7 @@ def test_post_upload_letter_with_invalid_file(mocker, client_request, fake_uuid) ) assert page.find('div', class_='banner-dangerous').find('h1', {"data-error-type": 'content-outside-printable-area'}) - assert not page.find('button', {'type': 'submit'}) + assert not page.find('button', {'class': 'button', 'type': 'submit'}) def test_post_upload_letter_shows_letter_preview_for_invalid_file(mocker, client_request, fake_uuid): @@ -298,6 +298,9 @@ def test_post_upload_letter_shows_letter_preview_for_invalid_file(mocker, client assert 'The Queen' not in page.text assert len(page.select('.letter-postage')) == 0 + assert page.find("a", {"class": "govuk-back-link"})["href"] == "/services/{}/upload-letter".format(SERVICE_ONE_ID) + assert page.find("label", {"class": "file-upload-button"}) + letter_images = page.select('main img') assert len(letter_images) == 1 assert letter_images[0]['src'] == url_for( @@ -357,6 +360,8 @@ def test_uploaded_letter_preview( assert page.find('h1').text == 'my_letter.pdf' assert page.find('div', class_='letter-sent') + assert not page.find("label", {"class": "file-upload-button"}) + assert page.find('button', {'class': 'button', 'type': 'submit'}) def test_uploaded_letter_preview_does_not_show_send_button_if_service_in_trial_mode(