mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-17 04:59:37 -04:00
Calculate page count based on template values when previewing
Similar to the bug shown here https://www.pivotaltracker.com/story/show/181513431, but to fix the case when previewing a letter send using a CSV upload it wasn't using template values to calculate the page length.
This commit is contained in:
committed by
Katie Smith
parent
732bfffb93
commit
19e6e38426
@@ -645,6 +645,9 @@ def _check_messages(service_id, template_id, upload_id, preview_row, letters_as_
|
||||
) if not letters_as_pdf else None,
|
||||
email_reply_to=email_reply_to,
|
||||
sms_sender=sms_sender,
|
||||
# In this case, we don't provide template values when calculating the page count
|
||||
# because we don't know them at this point. It means that later on we will need to
|
||||
# recalculate the page count once we have the values
|
||||
page_count=get_page_count_for_letter(db_template),
|
||||
)
|
||||
recipients = RecipientCSV(
|
||||
@@ -677,6 +680,7 @@ def _check_messages(service_id, template_id, upload_id, preview_row, letters_as_
|
||||
abort(404)
|
||||
|
||||
page_count = get_page_count_for_letter(db_template, template.values)
|
||||
template.page_count = page_count
|
||||
original_file_name = get_csv_metadata(service_id, upload_id).get('original_file_name', '')
|
||||
|
||||
return dict(
|
||||
|
||||
@@ -2780,38 +2780,38 @@ def test_can_start_letters_job(
|
||||
(
|
||||
'png',
|
||||
{},
|
||||
{'postcode': 'abc123', 'addressline1': '123 street'},
|
||||
{'postcode': 'abc123', 'addressline1': '123 street', 'result': 'pass'},
|
||||
1
|
||||
),
|
||||
(
|
||||
'pdf',
|
||||
{},
|
||||
{'postcode': 'abc123', 'addressline1': '123 street'},
|
||||
{'postcode': 'abc123', 'addressline1': '123 street', 'result': 'pass'},
|
||||
None
|
||||
),
|
||||
(
|
||||
'png',
|
||||
{'row_index': 2},
|
||||
{'postcode': 'abc123', 'addressline1': '123 street'},
|
||||
{'postcode': 'abc123', 'addressline1': '123 street', 'result': 'pass'},
|
||||
1
|
||||
),
|
||||
(
|
||||
'png',
|
||||
{'row_index': 3},
|
||||
{'postcode': 'cba321', 'addressline1': '321 avenue'},
|
||||
{'postcode': 'cba321', 'addressline1': '321 avenue', 'result': 'fail'},
|
||||
1
|
||||
),
|
||||
(
|
||||
'png',
|
||||
{'row_index': 3, 'page': 2},
|
||||
{'postcode': 'cba321', 'addressline1': '321 avenue'},
|
||||
{'postcode': 'cba321', 'addressline1': '321 avenue', 'result': 'fail'},
|
||||
'2'
|
||||
),
|
||||
(
|
||||
# pdf expected page is always None
|
||||
'pdf',
|
||||
{'row_index': 3, 'page': 2},
|
||||
{'postcode': 'cba321', 'addressline1': '321 avenue'},
|
||||
{'postcode': 'cba321', 'addressline1': '321 avenue', 'result': 'fail'},
|
||||
None
|
||||
),
|
||||
])
|
||||
@@ -2833,14 +2833,14 @@ def test_should_show_preview_letter_message(
|
||||
):
|
||||
service_one['permissions'] = ['letter']
|
||||
mocker.patch('app.service_api_client.get_service', return_value={"data": service_one})
|
||||
mocker.patch('app.main.views.send.get_page_count_for_letter', return_value=1)
|
||||
mock_page_count = mocker.patch('app.main.views.send.get_page_count_for_letter', return_value=1)
|
||||
|
||||
mocker.patch(
|
||||
'app.main.views.send.s3download',
|
||||
return_value='\n'.join(
|
||||
['address line 1, postcode'] +
|
||||
['123 street, abc123'] +
|
||||
['321 avenue, cba321']
|
||||
['address line 1, postcode, result'] +
|
||||
['123 street, abc123, pass'] +
|
||||
['321 avenue, cba321, fail']
|
||||
)
|
||||
)
|
||||
mocker.patch(
|
||||
@@ -2876,12 +2876,15 @@ def test_should_show_preview_letter_message(
|
||||
mock_get_service_letter_template.assert_called_with(service_id, template_id, None)
|
||||
|
||||
assert response.get_data(as_text=True) == 'foo'
|
||||
mocked_preview.assert_called_once()
|
||||
assert mocked_preview.call_args[0][0].id == template_id
|
||||
assert type(mocked_preview.call_args[0][0]) == LetterPreviewTemplate
|
||||
assert mocked_preview.call_args[0][1] == filetype
|
||||
assert mocked_preview.call_args[0][0].values == expected_values
|
||||
assert mocked_preview.call_args[1] == {'page': expected_page}
|
||||
|
||||
mock_page_count.assert_called_with(ANY, expected_values)
|
||||
|
||||
|
||||
def test_dont_show_preview_letter_templates_for_bad_filetype(
|
||||
client_request,
|
||||
|
||||
Reference in New Issue
Block a user