mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-08 21:23:12 -04:00
Show organisation breadcrumbs
Added a breadcrumb link to a service's organisation to the withnav_template. This will only show if a service has an organisation and the current user is also a member of that org, or the current user is a platform admin user. Also removed a couple of unused fixtures from the client_request fixture.
This commit is contained in:
@@ -8,6 +8,12 @@
|
|||||||
<div id="content">
|
<div id="content">
|
||||||
<div class="navigation-service">
|
<div class="navigation-service">
|
||||||
<div class="navigation-service-name">
|
<div class="navigation-service-name">
|
||||||
|
{% if current_service.organisation_id %}
|
||||||
|
{% if current_user.platform_admin or current_user.belongs_to_organisation(current_service.organisation_id) %}
|
||||||
|
<a href="{{ url_for('.organisation_dashboard', org_id=current_service.organisation.id) }}">{{ current_service.organisation.name }}</a>
|
||||||
|
<span class="navigation-breadcrumb"></span>
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
{{ current_service.name }}
|
{{ current_service.name }}
|
||||||
</div>
|
</div>
|
||||||
<a href="{{ url_for('main.choose_account') }}" class="navigation-service-switch">Switch service</a>
|
<a href="{{ url_for('main.choose_account') }}" class="navigation-service-switch">Switch service</a>
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ from datetime import datetime
|
|||||||
from unittest.mock import call
|
from unittest.mock import call
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
from bs4 import BeautifulSoup
|
||||||
from flask import url_for
|
from flask import url_for
|
||||||
from freezegun import freeze_time
|
from freezegun import freeze_time
|
||||||
|
|
||||||
@@ -17,10 +18,12 @@ from app.main.views.dashboard import (
|
|||||||
get_tuples_of_financial_years,
|
get_tuples_of_financial_years,
|
||||||
)
|
)
|
||||||
from tests import (
|
from tests import (
|
||||||
|
service_json,
|
||||||
validate_route_permission,
|
validate_route_permission,
|
||||||
validate_route_permission_with_client,
|
validate_route_permission_with_client,
|
||||||
)
|
)
|
||||||
from tests.conftest import (
|
from tests.conftest import (
|
||||||
|
ORGANISATION_ID,
|
||||||
SERVICE_ONE_ID,
|
SERVICE_ONE_ID,
|
||||||
active_caseworking_user,
|
active_caseworking_user,
|
||||||
active_user_view_permissions,
|
active_user_view_permissions,
|
||||||
@@ -1333,3 +1336,79 @@ def test_should_show_all_jobs_with_valid_statuses(
|
|||||||
'ready to send',
|
'ready to send',
|
||||||
'sent to dvla'
|
'sent to dvla'
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
def test_org_breadcrumbs_do_not_show_if_service_has_no_org(
|
||||||
|
client_request,
|
||||||
|
mock_get_template_statistics,
|
||||||
|
mock_get_service_templates_when_no_templates_exist,
|
||||||
|
mock_get_jobs,
|
||||||
|
):
|
||||||
|
page = client_request.get('main.service_dashboard', service_id=SERVICE_ONE_ID)
|
||||||
|
|
||||||
|
assert not page.select('.navigation-breadcrumb')
|
||||||
|
|
||||||
|
|
||||||
|
def test_org_breadcrumbs_do_not_show_if_user_is_not_an_org_member(
|
||||||
|
mocker,
|
||||||
|
client,
|
||||||
|
mock_get_service_templates_when_no_templates_exist,
|
||||||
|
mock_get_jobs,
|
||||||
|
active_caseworking_user,
|
||||||
|
client_request,
|
||||||
|
mock_get_template_folders,
|
||||||
|
):
|
||||||
|
# active_caseworking_user is not an org member
|
||||||
|
|
||||||
|
service_one_json = service_json(SERVICE_ONE_ID,
|
||||||
|
users=[active_caseworking_user['id']],
|
||||||
|
organisation_id=ORGANISATION_ID)
|
||||||
|
mocker.patch('app.service_api_client.get_service', return_value={'data': service_one_json})
|
||||||
|
|
||||||
|
client_request.login(active_caseworking_user, service=service_one_json)
|
||||||
|
page = client_request.get('main.service_dashboard', service_id=SERVICE_ONE_ID, _follow_redirects=True)
|
||||||
|
|
||||||
|
assert not page.select('.navigation-breadcrumb')
|
||||||
|
|
||||||
|
|
||||||
|
def test_org_breadcrumbs_show_if_user_is_a_member_of_the_services_org(
|
||||||
|
mocker,
|
||||||
|
mock_get_template_statistics,
|
||||||
|
mock_get_service_templates_when_no_templates_exist,
|
||||||
|
mock_get_jobs,
|
||||||
|
active_user_with_permissions,
|
||||||
|
client_request,
|
||||||
|
):
|
||||||
|
# active_user_with_permissions (used by the client_request) is an org member
|
||||||
|
|
||||||
|
service_one_json = service_json(SERVICE_ONE_ID,
|
||||||
|
users=[active_user_with_permissions['id']],
|
||||||
|
organisation_id=ORGANISATION_ID)
|
||||||
|
|
||||||
|
mocker.patch('app.service_api_client.get_service', return_value={'data': service_one_json})
|
||||||
|
mocker.patch('app.models.service.Organisation')
|
||||||
|
|
||||||
|
page = client_request.get('main.service_dashboard', service_id=SERVICE_ONE_ID)
|
||||||
|
|
||||||
|
assert page.select('.navigation-breadcrumb')
|
||||||
|
|
||||||
|
|
||||||
|
def test_org_breadcrumbs_show_if_user_is_platform_admin(
|
||||||
|
mocker,
|
||||||
|
mock_get_template_statistics,
|
||||||
|
mock_get_service_templates_when_no_templates_exist,
|
||||||
|
mock_get_jobs,
|
||||||
|
platform_admin_user,
|
||||||
|
logged_in_platform_admin_client,
|
||||||
|
):
|
||||||
|
service_one_json = service_json(SERVICE_ONE_ID,
|
||||||
|
users=[platform_admin_user['id']],
|
||||||
|
organisation_id=ORGANISATION_ID)
|
||||||
|
|
||||||
|
mocker.patch('app.service_api_client.get_service', return_value={'data': service_one_json})
|
||||||
|
mocker.patch('app.models.service.Organisation')
|
||||||
|
|
||||||
|
response = logged_in_platform_admin_client.get(url_for('main.service_dashboard', service_id=SERVICE_ONE_ID))
|
||||||
|
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
|
||||||
|
|
||||||
|
assert page.select('.navigation-breadcrumb')
|
||||||
|
|||||||
@@ -2847,10 +2847,8 @@ def os_environ():
|
|||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def client_request(
|
def client_request(
|
||||||
logged_in_client,
|
logged_in_client,
|
||||||
active_user_with_permissions,
|
|
||||||
mocker,
|
mocker,
|
||||||
service_one,
|
service_one,
|
||||||
fake_uuid,
|
|
||||||
):
|
):
|
||||||
class ClientRequest:
|
class ClientRequest:
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user