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 %}
+ {% 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(