From c26d308a32b509cd7d4d262e78a2526442991e9f Mon Sep 17 00:00:00 2001 From: Chris Hill-Scott Date: Thu, 14 Sep 2017 12:21:40 +0100 Subject: [PATCH] Show row errors before trial mode errors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It’s useful to be able to play with the CSV upload thing and find out how it works before you’re interrupted by the error telling you that you’ve got as far as you can in trial mode. --- app/main/views/send.py | 8 +++++--- tests/app/main/views/test_send.py | 32 +++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/app/main/views/send.py b/app/main/views/send.py index 870fdcb48..757f8cbe0 100644 --- a/app/main/views/send.py +++ b/app/main/views/send.py @@ -459,15 +459,17 @@ def check_messages(service_id, template_type, upload_id): data['recipients'].too_many_rows or not data['count_of_recipients'] or not data['recipients'].has_recipient_columns or - data['recipients'].missing_column_headers or - data['trying_to_send_letters_in_trial_mode'] + data['recipients'].missing_column_headers ): return render_template('views/check/column-errors.html', **data) if data['row_errors']: return render_template('views/check/row-errors.html', **data) - if data['errors']: + if ( + data['errors'] or + data['trying_to_send_letters_in_trial_mode'] + ): return render_template('views/check/column-errors.html', **data) return render_template('views/check/ok.html', **data) diff --git a/tests/app/main/views/test_send.py b/tests/app/main/views/test_send.py index d80548416..45e6b4b44 100644 --- a/tests/app/main/views/test_send.py +++ b/tests/app/main/views/test_send.py @@ -1631,6 +1631,38 @@ def test_check_messages_shows_trial_mode_error_for_letters( assert not error +def test_check_messages_shows_data_errors_before_trial_mode_errors_for_letters( + mocker, + client_request, + mock_get_service_letter_template, + mock_has_permissions, + mock_get_users_by_service, + mock_get_detailed_service_for_today, +): + + mocker.patch('app.main.views.send.s3download', return_value='\n'.join( + ['address_line_1,address_line_2,postcode,'] + + [' , ,11SW1 1AA'] + )) + + with client_request.session_transaction() as session: + session['upload_data'] = {'template_id': '', 'original_file_name': 'example.xlsx'} + + page = client_request.get( + 'main.check_messages', + service_id=SERVICE_ONE_ID, + template_type='letter', + upload_id=uuid.uuid4(), + _test_page_title=False, + ) + + assert normalize_spaces(page.select_one('.banner-dangerous').text) == ( + 'There is a problem with example.xlsx ' + 'You need to enter missing data in 1 row ' + 'Skip to file contents' + ) + + def test_generate_test_letter_doesnt_block_in_trial_mode( client_request, mocker,