diff --git a/app/templates/components/table.html b/app/templates/components/table.html index 4eba1c54e..f8b03e248 100644 --- a/app/templates/components/table.html +++ b/app/templates/components/table.html @@ -65,12 +65,12 @@ {% endif %} {%- endmacro %} -{% macro field(align='left', status='', border=True) -%} +{% macro field(align='left', status='', border=True, colspan=None) -%} {% set field_alignment = 'table-field-right-aligned' if align == 'right' else 'table-field-left-aligned' %} {% set border = '' if border else 'table-field-noborder' %} - +
{{ caller() }}
{%- endmacro %} @@ -81,8 +81,8 @@ {%- endmacro %} -{% macro index_field(text=None) -%} - +{% macro index_field(text=None, rowspan=None) -%} + {{ text if text != None else caller() }} {%- endmacro %} diff --git a/app/templates/views/check/row-errors.html b/app/templates/views/check/row-errors.html index b29aa88d9..3ddc43b29 100644 --- a/app/templates/views/check/row-errors.html +++ b/app/templates/views/check/row-errors.html @@ -67,12 +67,32 @@ ] + recipients.column_headers ) %} {% for item in recipients.displayed_rows %} - {% call row(item.id) %} - {% call index_field() %} - - {{ item.index + 2 }} - + {% if item.has_error_spanning_multiple_cells %} + {% call row() %} + {% call index_field(rowspan=2) %} + + {{ item.index + 2 }} + + {% endcall %} + {% call field(colspan=recipients.column_headers|length) %} + + {% if item.message_empty %} + No content for this message + {% elif item.message_too_long %} + Message is too long + {% endif %} + + {% endcall %} {% endcall %} + {% endif %} + {% call row(item.id) %} + {% if not item.has_error_spanning_multiple_cells %} + {% call index_field() %} + + {{ item.index + 2 }} + + {% endcall %} + {% endif %} {% for column in recipients.column_headers %} {% if item[column].error and not recipients.missing_column_headers %} {% call field() %} diff --git a/tests/app/main/views/test_send.py b/tests/app/main/views/test_send.py index 72812158d..09c7ce4b7 100644 --- a/tests/app/main/views/test_send.py +++ b/tests/app/main/views/test_send.py @@ -486,8 +486,16 @@ def test_upload_csv_file_with_empty_message_shows_check_page_with_errors( assert [ normalize_spaces(row.text) for row in page.select('tbody tr') ] == [ - '3 +447700900986 no', + '3 No content for this message', + '+447700900986 no', ] + assert normalize_spaces(page.select_one('.table-field-index').text) == '3' + assert page.select_one('.table-field-index')['rowspan'] == '2' + assert normalize_spaces(page.select('tbody tr td')[0].text) == '3' + assert normalize_spaces(page.select('tbody tr td')[1].text) == ( + 'No content for this message' + ) + assert page.select('tbody tr td')[1]['colspan'] == '2' @pytest.mark.parametrize('file_contents, expected_error,', [