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.
This commit is contained in:
Chris Hill-Scott
2018-10-30 14:27:09 +00:00
parent 3a62946ecd
commit a79dfd1d6e
3 changed files with 70 additions and 13 deletions

View File

@@ -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,

View File

@@ -50,13 +50,12 @@
)}}" class='page-footer'>
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
{% if not error %}
{% if template.template_type != 'letter' or not request.args.from_test %}
<button type="submit" class="button">Send 1 {{ message_count_label(1, template.template_type, suffix='') }}</button>
{% else %}
<a href="{{ url_for('main.check_messages_preview', service_id=current_service.id, template_id=template.id, upload_id=upload_id, filetype='pdf') }}" download class="button">Download as a printable PDF</a>
{% endif %}
{% endif %}
<a href="{{ back_link }}" class="page-footer-back-link">Back</a>
{% if template.template_type == 'letter' %}
<a href="{{ url_for('main.check_notification_preview', service_id=current_service.id, template_id=template.id, filetype='pdf') }}" download>Download as a printable PDF</a>
{% endif %}
</form>
</div>

View File

@@ -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 cant 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(