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(