import re import pytest from flask import url_for from freezegun import freeze_time from app.formatters import normalize_spaces from tests.conftest import ( SERVICE_ONE_ID, create_active_caseworking_user, create_active_user_with_permissions, create_platform_admin_user, ) @pytest.mark.skip(reason="Not sure that TTS needs this") @pytest.mark.parametrize('user', ( create_platform_admin_user(), create_active_user_with_permissions(), )) def test_all_users_have_upload_contact_list( client_request, mock_get_uploads, mock_get_jobs, mock_get_no_contact_lists, user, ): client_request.login(user) page = client_request.get('main.uploads', service_id=SERVICE_ONE_ID) button = page.find('a', text=re.compile('Upload an emergency contact list')) assert button assert button['href'] == url_for( 'main.upload_contact_list', service_id=SERVICE_ONE_ID, ) @pytest.mark.parametrize('extra_permissions, expected_empty_message', ( ([], ( 'You have not uploaded any files recently.' )), )) def test_get_upload_hub_with_no_uploads( mocker, client_request, service_one, mock_get_no_uploads, mock_get_no_contact_lists, extra_permissions, expected_empty_message, ): mocker.patch('app.job_api_client.get_jobs', return_value={'data': []}) service_one['permissions'] += extra_permissions page = client_request.get('main.uploads', service_id=SERVICE_ONE_ID) assert normalize_spaces(' '.join( paragraph.text for paragraph in page.select('main p') )) == expected_empty_message assert not page.select('.file-list-filename') @pytest.mark.skip(reason="Needs to be rewritten with no letters") @freeze_time('2017-10-10 10:10:10') def test_get_upload_hub_page( mocker, client_request, service_one, mock_get_uploads, mock_get_no_contact_lists, ): mocker.patch('app.job_api_client.get_jobs', return_value={'data': []}) service_one['permissions'] += ['letter', 'upload_letters'] page = client_request.get('main.uploads', service_id=SERVICE_ONE_ID) assert page.find('h1').text == 'Uploads' assert page.find('a', text=re.compile('Upload a letter')).attrs['href'] == url_for( 'main.upload_letter', service_id=SERVICE_ONE_ID ) uploads = page.select('tbody tr') assert len(uploads) == 3 assert normalize_spaces(uploads[0].text.strip()) == ( 'Uploaded letters ' 'Printing today at 5:30pm ' '33 letters' ) assert uploads[0].select_one('a.file-list-filename-large')['href'] == url_for( 'main.uploaded_letters', service_id=SERVICE_ONE_ID, letter_print_day='2017-10-10', ) assert normalize_spaces(uploads[1].text.strip()) == ( 'some.csv ' 'Sent 1 January 2016 at 6:09am ' '0 sending 8 delivered 2 failed' ) assert uploads[1].select_one('a.file-list-filename-large')['href'] == ( '/services/{}/jobs/job_id_1'.format(SERVICE_ONE_ID) ) assert normalize_spaces(uploads[2].text.strip()) == ( 'some.pdf ' 'Sent 1 January 2016 at 6:09am ' 'Firstname Lastname ' '123 Example Street' ) assert normalize_spaces(str(uploads[2].select_one('.govuk-body'))) == ( '
'
'Firstname Lastname
'
'123 Example Street
'
'