From a79dfd1d6e80766064c48739e9846fa7fb88cb74 Mon Sep 17 00:00:00 2001 From: Chris Hill-Scott Date: Tue, 30 Oct 2018 14:27:09 +0000 Subject: [PATCH] Always show download link for PDF This feature is useful for people to try the letter thing out and see how it feels, maybe print one on their own printer before incurring cost. --- app/main/views/send.py | 1 - app/templates/views/notifications/check.html | 7 +- tests/app/main/views/test_send.py | 75 +++++++++++++++++--- 3 files changed, 70 insertions(+), 13 deletions(-) diff --git a/app/main/views/send.py b/app/main/views/send.py index aec7e44e1..7f5ab7fba 100644 --- a/app/main/views/send.py +++ b/app/main/views/send.py @@ -592,7 +592,6 @@ def _check_messages(service_id, template_id, upload_id, preview_row, letters_as_ trying_to_send_letters_in_trial_mode=all(( current_service.trial_mode, template.template_type == 'letter', - not request.args.get('from_test'), )), required_recipient_columns=OrderedSet(recipients.recipient_column_headers) - optional_address_columns, preview_row=preview_row, diff --git a/app/templates/views/notifications/check.html b/app/templates/views/notifications/check.html index dec854f0b..99b287757 100644 --- a/app/templates/views/notifications/check.html +++ b/app/templates/views/notifications/check.html @@ -50,13 +50,12 @@ )}}" class='page-footer'> {% if not error %} - {% if template.template_type != 'letter' or not request.args.from_test %} - {% else %} - Download as a printable PDF - {% endif %} {% endif %} Back + {% if template.template_type == 'letter' %} + Download as a printable PDF + {% endif %} diff --git a/tests/app/main/views/test_send.py b/tests/app/main/views/test_send.py index 3e8d321a8..beeafabc5 100644 --- a/tests/app/main/views/test_send.py +++ b/tests/app/main/views/test_send.py @@ -1964,7 +1964,7 @@ def test_test_message_can_only_be_sent_now( def test_letter_can_only_be_sent_now( client_request, mocker, - service_one, + mock_get_live_service, mock_get_service_letter_template, mock_get_users_by_service, mock_get_service_statistics, @@ -1978,10 +1978,9 @@ def test_letter_can_only_be_sent_now( content = client_request.get( 'main.check_messages', - service_id=service_one['id'], + service_id=SERVICE_ONE_ID, upload_id=fake_uuid, template_id=fake_uuid, - from_test=True ) assert 'name="scheduled_for"' not in content @@ -2657,7 +2656,11 @@ def test_check_messages_column_error_doesnt_show_optional_columns( ) -def test_generate_test_letter_doesnt_block_in_trial_mode( +@pytest.mark.parametrize('extra_args', ( + {}, + {'from_test': True}, +)) +def test_letters_from_csv_files_dont_have_download_link( client_request, mocker, mock_get_service, @@ -2668,6 +2671,7 @@ def test_generate_test_letter_doesnt_block_in_trial_mode( mock_get_service_statistics, mock_get_job_doesnt_exist, mock_s3_set_metadata, + extra_args, ): mocker.patch('app.main.views.send.s3download', return_value=""" @@ -2692,14 +2696,69 @@ def test_generate_test_letter_doesnt_block_in_trial_mode( service_id=SERVICE_ONE_ID, template_id=fake_uuid, upload_id=fake_uuid, - from_test=True, + _test_page_title=False, + **extra_args + ) + + assert normalize_spaces( + page.select_one('.banner-dangerous').text + ) == normalize_spaces( + 'You can’t send this letter ' + 'In trial mode you can only preview how your letters will look ' + 'Skip to file contents' + ) + + assert len(page.select('.letter img')) == 5 + assert not page.select('a[download]') + + +@pytest.mark.parametrize('service_mock', ( + mock_get_service, + mock_get_live_service, +)) +def test_one_off_letters_have_download_link( + client_request, + mocker, + api_user_active, + mock_get_service_letter_template, + mock_has_permissions, + fake_uuid, + mock_get_users_by_service, + mock_get_service_statistics, + service_mock, +): + + service_mock(mocker, api_user_active) + + mocker.patch( + 'app.main.views.send.get_page_count_for_letter', + return_value=5, + ) + + with client_request.session_transaction() as session: + session['recipient'] = None + session['placeholders'] = { + 'address_line_1': 'First Last', + 'address_line_2': '123 Street', + 'postcode': 'SW1 1AA', + } + + page = client_request.get( + 'main.check_notification', + service_id=SERVICE_ONE_ID, + template_id=fake_uuid, _test_page_title=False, ) - assert not page.select('.banner-dangerous') - assert len(page.select('.letter img')) == 5 - assert page.select_one('a.button').text == 'Download as a printable PDF' + + assert page.select_one('a[download]')['href'] == url_for( + 'main.check_notification_preview', + service_id=SERVICE_ONE_ID, + template_id=fake_uuid, + filetype='pdf', + ) + assert page.select_one('a[download]').text == 'Download as a printable PDF' def test_check_messages_shows_over_max_row_error(