mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-04-29 13:42:15 -04:00
It doesn’t make sense to show the back to service link if, for example, you are in the onboarding flow and haven’t created a service yet.
113 lines
3.4 KiB
Python
113 lines
3.4 KiB
Python
from flask import url_for
|
|
from bs4 import BeautifulSoup
|
|
|
|
|
|
def test_should_show_choose_services_page(
|
|
logged_in_client,
|
|
mock_login,
|
|
mock_get_user,
|
|
api_user_active,
|
|
mock_get_services,
|
|
):
|
|
response = logged_in_client.get(url_for('main.choose_service'))
|
|
|
|
assert response.status_code == 200
|
|
resp_data = response.get_data(as_text=True)
|
|
assert 'Choose service' in resp_data
|
|
services = mock_get_services.side_effect()
|
|
assert mock_get_services.called
|
|
assert services['data'][0]['name'] in resp_data
|
|
assert services['data'][1]['name'] in resp_data
|
|
|
|
|
|
def test_should_show_choose_services_page_if_no_services(
|
|
logged_in_client,
|
|
mock_login,
|
|
api_user_active,
|
|
):
|
|
# if users last service has been archived there'll be no services
|
|
# mock_login already patches get_services to return no data
|
|
response = logged_in_client.get(url_for('main.choose_service'))
|
|
assert response.status_code == 200
|
|
resp_data = response.get_data(as_text=True)
|
|
assert 'Choose service' in resp_data
|
|
assert 'Add a new service' in resp_data
|
|
|
|
|
|
def test_redirect_if_only_one_service(
|
|
logged_in_client,
|
|
mock_login,
|
|
api_user_active,
|
|
mock_get_services_with_one_service,
|
|
):
|
|
response = logged_in_client.get(url_for('main.show_all_services_or_dashboard'))
|
|
|
|
service = mock_get_services_with_one_service.side_effect()['data'][0]
|
|
assert response.status_code == 302
|
|
assert response.location == url_for('main.service_dashboard', service_id=service['id'], _external=True)
|
|
|
|
|
|
def test_redirect_if_multiple_services(
|
|
logged_in_client,
|
|
mock_login,
|
|
api_user_active,
|
|
):
|
|
response = logged_in_client.get(url_for('main.show_all_services_or_dashboard'))
|
|
|
|
assert response.status_code == 302
|
|
assert response.location == url_for('main.choose_service', _external=True)
|
|
|
|
|
|
def test_redirect_if_service_in_session(
|
|
logged_in_client,
|
|
mock_login,
|
|
api_user_active,
|
|
mock_get_services,
|
|
mock_get_service,
|
|
):
|
|
with logged_in_client.session_transaction() as session:
|
|
session['service_id'] = '147ad62a-2951-4fa1-9ca0-093cd1a52c52'
|
|
response = logged_in_client.get(url_for('main.show_all_services_or_dashboard'))
|
|
|
|
assert response.status_code == 302
|
|
assert response.location == url_for(
|
|
'main.service_dashboard',
|
|
service_id='147ad62a-2951-4fa1-9ca0-093cd1a52c52',
|
|
_external=True
|
|
)
|
|
|
|
|
|
def test_should_redirect_if_not_logged_in(
|
|
logged_in_client,
|
|
app_
|
|
):
|
|
response = logged_in_client.get(url_for('main.show_all_services_or_dashboard'))
|
|
assert response.status_code == 302
|
|
assert url_for('main.index', _external=True) in response.location
|
|
|
|
|
|
def test_should_show_back_to_service_link(
|
|
logged_in_client
|
|
):
|
|
response = logged_in_client.get(url_for('main.choose_service'))
|
|
|
|
assert response.status_code == 200
|
|
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
|
|
assert page.select('.navigation-service a')[0]['href'] == (
|
|
url_for('main.show_all_services_or_dashboard')
|
|
)
|
|
|
|
|
|
def test_should_not_show_back_to_service_link_if_no_service_in_session(
|
|
client,
|
|
api_user_active,
|
|
mock_get_user,
|
|
mock_get_services_with_no_services,
|
|
):
|
|
client.login(api_user_active)
|
|
response = client.get(url_for('main.choose_service'))
|
|
|
|
assert response.status_code == 200
|
|
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
|
|
assert len(page.select('.navigation-service a')) == 0
|