mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-24 00:07:02 -04:00
Merge pull request #3135 from alphagov/enforce_letter_10_page_limit
Enforce letter 10 page limit
This commit is contained in:
@@ -2735,6 +2735,56 @@ def test_check_messages_shows_trial_mode_error_for_letters(
|
||||
assert page.select_one('.table-field-index a').text == '3'
|
||||
|
||||
|
||||
@pytest.mark.parametrize('number_of_rows, expected_error_message', [
|
||||
(1, 'This letter is'),
|
||||
(11, 'These letters are'), # TODO: Pluralise too many pages error message for multiple letters
|
||||
])
|
||||
def test_check_messages_does_not_allow_to_send_letter_longer_than_10_pages(
|
||||
client_request,
|
||||
api_user_active,
|
||||
mock_get_service_letter_template,
|
||||
mock_has_permissions,
|
||||
mock_get_users_by_service,
|
||||
mock_get_service_statistics,
|
||||
mock_get_job_doesnt_exist,
|
||||
mock_get_jobs,
|
||||
mock_s3_set_metadata,
|
||||
fake_uuid,
|
||||
mocker,
|
||||
mock_get_live_service,
|
||||
number_of_rows,
|
||||
expected_error_message,
|
||||
):
|
||||
mocker.patch('app.main.views.send.s3download', return_value='\n'.join(
|
||||
['address_line_1,address_line_2,postcode,'] +
|
||||
['First Last, 123 Street, SW1 1AA'] * number_of_rows
|
||||
))
|
||||
mocker.patch(
|
||||
'app.main.views.send.get_page_count_for_letter',
|
||||
return_value=11,
|
||||
)
|
||||
|
||||
with client_request.session_transaction() as session:
|
||||
session['file_uploads'] = {
|
||||
fake_uuid: {
|
||||
'template_id': '',
|
||||
}
|
||||
}
|
||||
|
||||
page = client_request.get(
|
||||
'main.check_messages',
|
||||
service_id=SERVICE_ONE_ID,
|
||||
template_id=fake_uuid,
|
||||
upload_id=fake_uuid,
|
||||
_test_page_title=False,
|
||||
)
|
||||
|
||||
assert page.select('#letter-too-long')
|
||||
|
||||
assert len(page.select('.letter img')) == 10 # if letter longer than 10 pages, only 10 first pages are displayed
|
||||
assert not page.select('[type=submit]')
|
||||
|
||||
|
||||
def test_check_messages_shows_data_errors_before_trial_mode_errors_for_letters(
|
||||
mocker,
|
||||
client_request,
|
||||
@@ -3066,6 +3116,45 @@ def test_send_one_off_letter_errors_in_trial_mode(
|
||||
assert page.select_one('a[download]').text == 'Download as a PDF'
|
||||
|
||||
|
||||
def test_send_one_off_letter_errors_if_letter_longer_than_10_pages(
|
||||
client_request,
|
||||
mocker,
|
||||
mock_get_live_service,
|
||||
mock_get_service_letter_template,
|
||||
mock_has_permissions,
|
||||
fake_uuid,
|
||||
mock_get_users_by_service,
|
||||
mock_get_service_statistics,
|
||||
mock_get_job_doesnt_exist,
|
||||
mock_s3_set_metadata,
|
||||
):
|
||||
|
||||
mocker.patch(
|
||||
'app.main.views.send.get_page_count_for_letter',
|
||||
return_value=11,
|
||||
)
|
||||
|
||||
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 page.select('#letter-too-long')
|
||||
assert len(page.select('.letter img')) == 10
|
||||
|
||||
assert not page.select('[type=submit]')
|
||||
|
||||
|
||||
def test_check_messages_shows_over_max_row_error(
|
||||
client_request,
|
||||
mock_get_users_by_service,
|
||||
|
||||
@@ -521,6 +521,31 @@ def test_view_non_letter_template_does_not_display_postage(
|
||||
assert "Postage" not in page.text
|
||||
|
||||
|
||||
def test_view_letter_template_does_not_display_send_button_if_template_over_10_pages_long(
|
||||
client_request,
|
||||
service_one,
|
||||
mock_get_service_templates,
|
||||
mock_get_template_folders,
|
||||
single_letter_contact_block,
|
||||
mock_has_jobs,
|
||||
active_user_with_permissions,
|
||||
mocker,
|
||||
fake_uuid,
|
||||
):
|
||||
mocker.patch('app.main.views.templates.get_page_count_for_letter', return_value=11)
|
||||
client_request.login(active_user_with_permissions)
|
||||
mock_get_service_letter_template(mocker, postage="second")
|
||||
page = client_request.get(
|
||||
'main.view_template',
|
||||
service_id=SERVICE_ONE_ID,
|
||||
template_id=fake_uuid,
|
||||
_test_page_title=False,
|
||||
)
|
||||
|
||||
assert "Send" not in page.text
|
||||
assert page.select('#letter-too-long')
|
||||
|
||||
|
||||
def test_edit_letter_template_postage_page_displays_correctly(
|
||||
client_request,
|
||||
service_one,
|
||||
|
||||
Reference in New Issue
Block a user