def test_planned_tests_page_with_current_operator_test( mocker, client_get, extra_json_fields, ): mocker.patch('app.models.alerts.PlannedTests.from_yaml', return_value=[]) mocker.patch('app.models.alerts.Alerts.load', return_value=Alerts([ create_alert_dict( channel='operator', starts_at=dt_parse('2021-04-21T09:00:00Z'), **extra_json_fields) ])) html = client_get("alerts/planned-tests") assert [normalize_spaces(h2.text) for h2 in html.select('main h2')] == ['Wednesday 21 April 2021'] assert not html.select('main h3') assert [normalize_spaces(p.text) for p in html.select('main p')] == [ 'Some mobile phone networks in the UK will test emergency alerts.', 'Most phones and tablets will not get a test alert.', 'Find out more about mobile network operator tests.', 'The alert will say:', ('This is a mobile network operator test of the Emergency Alerts ' 'service. You do not need to take any action. To find out more, ' 'search for gov.uk/alerts'), ]
def test_landing_page_404s_if_no_key_in_query_string(client): response = client.get( url_for('main.landing', service_id=uuid4(), document_id=uuid4())) page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') assert response.status_code == 404 assert normalize_spaces(page.title.text) == 'Page not found – GOV.UK' assert normalize_spaces(page.h1.text) == 'Page not found'
def test_404_if_no_key_in_query_string(service_id, document_id, view, client): response = client.get( url_for( view, service_id=service_id, document_id=document_id, )) page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') assert response.status_code == 404 assert normalize_spaces(page.title.text) == 'Page not found – GOV.UK' assert normalize_spaces(page.h1.text) == 'Page not found'
def test_planned_tests_page_with_upcoming_test( mocker, client_get, data_from_yaml, expected_h2s, expected_h3s, expected_paragraphs, ): mocker.patch('app.models.alerts.PlannedTests.from_yaml', return_value=data_from_yaml) html = client_get("alerts/planned-tests") assert [normalize_spaces(h2.text) for h2 in html.select('main h2')] == expected_h2s assert [normalize_spaces(h3.text) for h3 in html.select('main h3')] == expected_h3s assert [normalize_spaces(p.text) for p in html.select('main p')] == expected_paragraphs
def test_download_document_creates_link_to_actual_doc_from_api( service_id, document_id, key, document_has_metadata, client, mocker, sample_service): mocker.patch('app.service_api_client.get_service', return_value={'data': sample_service}) response = client.get( url_for('main.download_document', service_id=service_id, document_id=document_id, key=key)) assert response.status_code == 200 page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') assert normalize_spaces(page.title.text) == 'Download your file – GOV.UK' assert normalize_spaces(page.h1.text) == 'Download your file' assert page.select('main a')[0]['href'] == 'url'
def test_landing_page_when_document_is_unavailable(client, mocker, sample_service): mocker.patch('app.service_api_client.get_service', return_value={'data': sample_service}) mocker.patch('app.main.views.index.is_file_available', return_value=False) response = client.get( url_for('main.landing', service_id=uuid4(), document_id=uuid4(), key='1234')) assert response.status_code == 200 page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') assert normalize_spaces(page.h1.text) == 'No longer available' contact_link = page.select('main a')[0] assert normalize_spaces(contact_link.text) == 'contact Sample Service' assert contact_link['href'] == 'https://sample-service.gov.uk'
def test_planned_tests_page(mocker, client_get): mocker.patch('app.models.alerts.PlannedTests.from_yaml', return_value=[]) html = client_get("alerts/planned-tests") assert html.select_one('h1').text.strip() == "Planned tests" assert [normalize_spaces(p.text) for p in html.select('main p')] == [ 'There are currently no planned tests of emergency alerts.', 'You can see previous tests on the past alerts page.', ] assert html.select_one('main p a').text == 'past alerts page' assert html.select_one('main p a')['href'] == '/alerts/past-alerts'
def test_landing_page_creates_link_for_document(client, mocker, sample_service): mocker.patch('app.service_api_client.get_service', return_value={'data': sample_service}) service_id = uuid4() document_id = uuid4() mocker.patch('app.main.views.index.is_file_available', return_value=True) response = client.get( url_for('main.landing', service_id=service_id, document_id=document_id, key='1234')) assert response.status_code == 200 page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') assert normalize_spaces( page.title.text) == 'You have a file to download – GOV.UK' assert normalize_spaces(page.h1.text) == 'You have a file to download' assert page.find('a', string=re.compile("Continue"))['href'] == url_for( 'main.download_document', service_id=service_id, document_id=document_id, key='1234')
def test_planned_tests_page_with_previous_days_operator_test( mocker, client_get, ): mocker.patch('app.models.alerts.PlannedTests.from_yaml', return_value=[]) mocker.patch('app.models.alerts.Alerts.load', return_value=Alerts([ create_alert_dict( channel='operator', starts_at=dt_parse('2021-04-20T09:00:00Z'), ) ])) html = client_get("alerts/planned-tests") assert normalize_spaces(html.select_one('main p').text) == ( 'There are currently no planned tests of emergency alerts.')
def test_index_page_shows_planned_tests( client_get, mocker, current_and_planned_test_alerts, expected_banner, ): mocker.patch('app.models.alerts.Alerts.current_and_public', []) mocker.patch( 'app.models.alerts.Alerts.current_and_planned_test_alerts', current_and_planned_test_alerts, ) html = client_get("alerts") assert normalize_spaces( html.select_one('.alerts-notification-banner').text) == ( expected_banner) assert html.select_one('.alerts-notification-banner a')['href'] == ( '/alerts/planned-tests')