Merge pull request #646 from alphagov/rearrange-csv-errors

Prioritise CSV errors to help you match placeholders to column headers
This commit is contained in:
Chris Hill-Scott
2016-06-06 12:21:13 +01:00
10 changed files with 167 additions and 101 deletions

View File

@@ -8,7 +8,6 @@ from app.utils import get_errors_for_csv
MockRecipients = namedtuple(
'RecipientCSV',
[
'missing_column_headers',
'rows_with_bad_recipients',
'rows_with_missing_data'
]
@@ -16,52 +15,45 @@ MockRecipients = namedtuple(
@pytest.mark.parametrize(
"missing_column_headers,rows_with_bad_recipients,rows_with_missing_data,template_type,expected_errors",
"rows_with_bad_recipients,rows_with_missing_data,template_type,expected_errors",
[
(
[], [], [],
[], [],
'sms',
[]
),
(
[], {2}, [],
{2}, [],
'sms',
['fix 1 phone number']
),
(
[], {2, 4, 6}, [],
{2, 4, 6}, [],
'sms',
['fix 3 phone numbers']
),
(
[], {1}, [],
{1}, [],
'email',
['fix 1 email address']
),
(
[], {2, 4, 6}, [],
{2, 4, 6}, [],
'email',
['fix 3 email addresses']
),
(
['name'], {2}, {3},
{2}, {3},
'sms',
[
'add a column called name',
'fix 1 phone number',
'enter missing data in 1 row'
]
),
(
['name', 'date'], [], [],
'sms',
['add 2 columns, name and date']
),
(
['name', 'date', 'time'], {2, 4, 6, 8}, {3, 6, 9, 12},
{2, 4, 6, 8}, {3, 6, 9, 12},
'sms',
[
'add columns called name, date, and time',
'fix 4 phone numbers',
'enter missing data in 4 rows'
]
@@ -69,11 +61,11 @@ MockRecipients = namedtuple(
]
)
def test_get_errors_for_csv(
missing_column_headers, rows_with_bad_recipients, rows_with_missing_data,
rows_with_bad_recipients, rows_with_missing_data,
template_type,
expected_errors
):
assert get_errors_for_csv(
MockRecipients(missing_column_headers, rows_with_bad_recipients, rows_with_missing_data),
MockRecipients(rows_with_bad_recipients, rows_with_missing_data),
template_type
) == expected_errors

View File

@@ -107,7 +107,7 @@ def test_upload_csvfile_with_errors_shows_check_page_with_errors(
for response in [initial_upload, reupload]:
assert response.status_code == 200
content = response.get_data(as_text=True)
assert 'There was a problem with invalid.csv' in content
assert 'There is a problem with your data' in content
assert '+447700900986' in content
assert 'Missing' in content
assert 'Re-upload your file' in content
@@ -314,7 +314,7 @@ def test_upload_csvfile_with_valid_phone_shows_all_numbers(
assert '07700 900701' in content
assert '07700 900749' in content
assert '07700 900750' not in content
assert 'Only showing the first 50 rows with errors' in content
assert 'Only showing the first 50 rows' in content
def test_create_job_should_call_api(
@@ -391,7 +391,7 @@ def test_check_messages_should_revalidate_file_when_uploading_file(
follow_redirects=True
)
assert response.status_code == 200
assert 'There was a problem with invalid.csv' in response.get_data(as_text=True)
assert 'There is a problem with your data' in response.get_data(as_text=True)
def test_route_permissions(mocker,