Merge pull request #3280 from alphagov/swap-nav-order-org-users

Swap order of usage and team members in navigation when organisation users are looking at a service
This commit is contained in:
Chris Hill-Scott
2020-02-11 11:21:14 +00:00
committed by GitHub
2 changed files with 80 additions and 12 deletions

View File

@@ -3,10 +3,10 @@
{% else %}
<nav class="navigation">
<ul>
{% if current_user.has_permissions('view_activity') %}
<li><a href="{{ url_for('.service_dashboard', service_id=current_service.id) }}" {{ main_navigation.is_selected('dashboard') }}>Dashboard</a></li>
{% endif %}
{% if current_user.has_permissions() %}
{% if current_user.has_permissions('view_activity') %}
<li><a href="{{ url_for('.service_dashboard', service_id=current_service.id) }}" {{ main_navigation.is_selected('dashboard') }}>Dashboard</a></li>
{% endif %}
<li><a href="{{ url_for('.choose_template', service_id=current_service.id) }}" {{ main_navigation.is_selected('templates') }}>Templates</a></li>
{% if current_user.has_permissions('view_activity') %}
{% if current_service.can_upload_letters %}
@@ -18,16 +18,19 @@
<li><a href="{{ url_for('main.uploads', service_id=current_service.id) }}" {{ casework_navigation.is_selected('uploads') }}>Uploads</a></li>
{% endif %}
{% endif %}
{% endif %}
<li><a href="{{ url_for('.manage_users', service_id=current_service.id) }}" {{ main_navigation.is_selected('team-members') }}>Team members</a></li>
{% if current_user.has_permissions('manage_service', allow_org_user=True) %}
{% if current_user.has_permissions('manage_service', allow_org_user=True) %}
<li><a href="{{ url_for('.usage', service_id=current_service.id) }}" {{ main_navigation.is_selected('usage') }}>Usage</a></li>
{% endif %}
{% if current_user.has_permissions('manage_api_keys', 'manage_service') %}
<li><a href="{{ url_for('.service_settings', service_id=current_service.id) }}" {{ main_navigation.is_selected('settings') }}>Settings</a></li>
{% endif %}
{% if current_user.has_permissions('manage_api_keys') %}
<li><a href="{{ url_for('.api_integration', service_id=current_service.id) }}" {{ main_navigation.is_selected('api-integration') }}>API integration</a></li>
{% endif %}
{% elif current_user.has_permissions(allow_org_user=True) %}
<li><a href="{{ url_for('.usage', service_id=current_service.id) }}" {{ main_navigation.is_selected('usage') }}>Usage</a></li>
{% endif %}
{% if current_user.has_permissions('manage_api_keys', 'manage_service') %}
<li><a href="{{ url_for('.service_settings', service_id=current_service.id) }}" {{ main_navigation.is_selected('settings') }}>Settings</a></li>
{% endif %}
{% if current_user.has_permissions('manage_api_keys') %}
<li><a href="{{ url_for('.api_integration', service_id=current_service.id) }}" {{ main_navigation.is_selected('api-integration') }}>API integration</a></li>
<li><a href="{{ url_for('.manage_users', service_id=current_service.id) }}" {{ main_navigation.is_selected('team-members') }}>Team members</a></li>
{% endif %}
</ul>
</nav>

View File

@@ -373,11 +373,76 @@ def test_service_navigation_for_org_user(
assert [
item.text.strip() for item in page.select('nav.navigation a')
] == [
'Team members',
'Usage',
'Team members',
]
@pytest.mark.parametrize('user_organisations, expected_menu_items, expected_status', [
(
[],
(
'Templates',
'Sent messages',
'Team members',
),
403,
),
(
[ORGANISATION_ID],
(
'Templates',
'Sent messages',
'Team members',
'Usage',
),
200,
),
])
def test_service_user_without_manage_service_permission_can_see_usage_page_when_org_user(
client_request,
mocker,
active_caseworking_user,
mock_has_no_jobs,
mock_get_usage,
mock_get_billable_units,
mock_get_free_sms_fragment_limit,
mock_get_service,
mock_get_invites_for_service,
mock_get_users_by_service,
mock_get_service_organisation,
mock_get_service_templates,
mock_get_template_folders,
user_organisations,
expected_status,
expected_menu_items,
):
active_caseworking_user['services'] = [SERVICE_ONE_ID]
active_caseworking_user['organisations'] = user_organisations
service = service_json(
id_=SERVICE_ONE_ID,
organisation_id=ORGANISATION_ID,
)
mocker.patch(
'app.service_api_client.get_service',
return_value={'data': service}
)
client_request.login(active_caseworking_user, service=service)
page = client_request.get(
'main.choose_template',
service_id=SERVICE_ONE_ID,
)
assert tuple(
item.text.strip() for item in page.select('nav.navigation a')
) == expected_menu_items
client_request.get(
'main.usage',
service_id=SERVICE_ONE_ID,
_expected_status=expected_status,
)
def get_name_of_decorator_from_ast_node(node):
if isinstance(node, ast.Name):
return str(node.id)