Merge branch 'master' into letter-on-usage-page

This commit is contained in:
Rebecca Law
2017-12-21 14:24:40 +00:00
committed by GitHub
12 changed files with 531 additions and 143 deletions

View File

@@ -352,6 +352,16 @@ def test_upload_csvfile_with_errors_shows_check_page_with_errors(
'Skip to file contents'
)
),
(
"""
phone number, name
""",
(
'Your file is missing some rows '
'It needs at least one row of data. '
'Skip to file contents'
)
),
(
"+447700900986",
(
@@ -440,34 +450,76 @@ def test_upload_csv_invalid_extension(
assert "invalid.txt isnt a spreadsheet that Notify can read" in resp.get_data(as_text=True)
def test_upload_valid_csv_shows_file_contents(
logged_in_client,
mocker,
def test_upload_valid_csv_redirects_to_check_page(
client_request,
mock_get_service_template_with_placeholders,
mock_s3_upload,
fake_uuid,
):
client_request.post(
'main.send_messages', service_id=SERVICE_ONE_ID, template_id=fake_uuid,
_data={'file': (BytesIO(''.encode('utf-8')), 'valid.csv')},
_expected_status=302,
expected_redirect='foo'
)
@pytest.mark.parametrize('extra_args, expected_recipient, expected_message', [
(
{},
'To: 07700900001',
'Test Service: A, Template <em>content</em> with & entity',
),
(
{'row_index': 0},
'To: 07700900001',
'Test Service: A, Template <em>content</em> with & entity',
),
(
{'row_index': 2},
'To: 07700900003',
'Test Service: C, Template <em>content</em> with & entity',
),
])
def test_upload_valid_csv_shows_preview_and_table(
client_request,
mocker,
mock_get_live_service,
mock_get_service_template_with_placeholders,
mock_get_users_by_service,
mock_get_detailed_service_for_today,
fake_uuid,
extra_args,
expected_recipient,
expected_message,
):
with client_request.session_transaction() as session:
session['upload_data'] = {'template_id': fake_uuid}
mocker.patch('app.main.views.send.s3download', return_value="""
phone number,name,thing,thing,thing
07700900986, Jo, foo, foo, foo
07700900001, A, foo, foo, foo
07700900002, B, foo, foo, foo
07700900003, C, foo, foo, foo
""")
response = logged_in_client.post(
url_for('main.send_messages', service_id=SERVICE_ONE_ID, template_id=fake_uuid),
data={'file': (BytesIO(''.encode('utf-8')), 'valid.csv')},
follow_redirects=True,
page = client_request.get(
'main.check_messages',
service_id=SERVICE_ONE_ID,
template_type='sms',
upload_id=fake_uuid,
**extra_args
)
assert response.status_code == 200
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
assert page.h1.text.strip() == 'Preview of Two week reminder'
assert page.select_one('.sms-message-recipient').text.strip() == expected_recipient
assert page.select_one('.sms-message-wrapper').text.strip() == expected_message
for index, cell in enumerate([
'<td class="table-field-index"> <span class=""> 2 </span> </td>',
'<td class="table-field-center-aligned "> <div class=""> 07700900986 </div> </td>',
'<td class="table-field-center-aligned "> <div class=""> Jo </div> </td>',
'<td class="table-field-center-aligned "> <div class=""> 07700900001 </div> </td>',
'<td class="table-field-center-aligned "> <div class=""> A </div> </td>',
(
'<td class="table-field-center-aligned "> '
'<div class="table-field-status-default"> '
@@ -481,6 +533,43 @@ def test_upload_valid_csv_shows_file_contents(
assert normalize_spaces(str(page.select('table tbody td')[index])) == cell
@pytest.mark.parametrize('row_index, expected_status', [
(0, 200),
(2, 200),
(3, 404),
])
def test_404_for_previewing_a_row_out_of_range(
client_request,
mocker,
mock_get_live_service,
mock_get_service_template_with_placeholders,
mock_get_users_by_service,
mock_get_detailed_service_for_today,
fake_uuid,
row_index,
expected_status,
):
with client_request.session_transaction() as session:
session['upload_data'] = {'template_id': fake_uuid}
mocker.patch('app.main.views.send.s3download', return_value="""
phone number,name,thing,thing,thing
07700900001, A, foo, foo, foo
07700900002, B, foo, foo, foo
07700900003, C, foo, foo, foo
""")
client_request.get(
'main.check_messages',
service_id=SERVICE_ONE_ID,
template_type='sms',
upload_id=fake_uuid,
row_index=row_index,
_expected_status=expected_status,
)
def test_send_test_doesnt_show_file_contents(
logged_in_client,
mocker,
@@ -1373,6 +1462,20 @@ def test_can_start_letters_job(
@pytest.mark.parametrize('filetype', ['pdf', 'png'])
@pytest.mark.parametrize('extra_args, expected_values', [
(
{},
{'postcode': 'abc123', 'addressline1': '123 street'},
),
(
{'row_index': 0},
{'postcode': 'abc123', 'addressline1': '123 street'},
),
(
{'row_index': 1},
{'postcode': 'cba321', 'addressline1': '321 avenue'},
),
])
def test_should_show_preview_letter_message(
filetype,
logged_in_platform_admin_client,
@@ -1382,6 +1485,8 @@ def test_should_show_preview_letter_message(
service_one,
fake_uuid,
mocker,
extra_args,
expected_values,
):
service_one['permissions'] = ['letter']
mocker.patch('app.service_api_client.get_service', return_value={"data": service_one})
@@ -1391,7 +1496,8 @@ def test_should_show_preview_letter_message(
'app.main.views.send.s3download',
return_value='\n'.join(
['address line 1, postcode'] +
['123 street, abc123']
['123 street, abc123'] +
['321 avenue, cba321']
)
)
mocked_preview = mocker.patch(
@@ -1414,7 +1520,8 @@ def test_should_show_preview_letter_message(
service_id=service_id,
template_type='letter',
upload_id=fake_uuid,
filetype=filetype
filetype=filetype,
**extra_args
)
)
@@ -1425,6 +1532,7 @@ def test_should_show_preview_letter_message(
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
def test_dont_show_preview_letter_templates_for_bad_filetype(