From 69d28d313c2a65ead87229841a50bfc130e8c952 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Fri, 30 Apr 2021 15:09:50 +0000 Subject: Add latest changes from gitlab-org/gitlab@master --- .../layouts/nav/sidebar/_project.html.haml_spec.rb | 316 +++++++++++++++++---- 1 file changed, 258 insertions(+), 58 deletions(-) (limited to 'spec/views') diff --git a/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb b/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb index ea0bdb1a9ae..f83a515fb23 100644 --- a/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb +++ b/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb @@ -348,6 +348,238 @@ RSpec.describe 'layouts/nav/sidebar/_project' do end end + describe 'Operations' do + it 'top level navigation link is visible for user with permissions' do + render + + expect(rendered).to have_link('Operations') + end + + describe 'Metrics Dashboard' do + it 'has a link to the metrics dashboard page' do + render + + expect(rendered).to have_link('Metrics', href: project_metrics_dashboard_path(project)) + end + + describe 'when the user does not have access' do + let(:user) { nil } + + it 'does not have a link to the metrics page' do + render + + expect(rendered).not_to have_link('Metrics') + end + end + end + + describe 'Logs' do + it 'has a link to the pod logs page' do + render + + expect(rendered).to have_link('Logs', href: project_logs_path(project)) + end + + describe 'when the user does not have access' do + let(:user) { nil } + + it 'does not have a link to the pod logs page' do + render + + expect(rendered).not_to have_link('Logs') + end + end + end + + describe 'Tracing' do + it 'has a link to the tracing page' do + render + + expect(rendered).to have_link('Tracing', href: project_tracing_path(project)) + end + + context 'without project.tracing_external_url' do + it 'has a link to the tracing page' do + render + + expect(rendered).to have_link('Tracing', href: project_tracing_path(project)) + end + end + + describe 'when the user does not have access' do + let(:user) { nil } + + it 'does not have a link to the tracing page' do + render + + expect(rendered).not_to have_text 'Tracing' + end + end + end + + describe 'Error Tracking' do + it 'has a link to the error tracking page' do + render + + expect(rendered).to have_link('Error Tracking', href: project_error_tracking_index_path(project)) + end + + describe 'when the user does not have access' do + let(:user) { nil } + + it 'does not have a link to the error tracking page' do + render + + expect(rendered).not_to have_link('Error Tracking') + end + end + end + + describe 'Alert Management' do + it 'has a link to the alert management page' do + render + + expect(rendered).to have_link('Alerts', href: project_alert_management_index_path(project)) + end + + describe 'when the user does not have access' do + let(:user) { nil } + + it 'does not have a link to the alert management page' do + render + + expect(rendered).not_to have_link('Alerts') + end + end + end + + describe 'Incidents' do + it 'has a link to the incidents page' do + render + + expect(rendered).to have_link('Incidents', href: project_incidents_path(project)) + end + + describe 'when the user does not have access' do + let(:user) { nil } + + it 'does not have a link to the incidents page' do + render + + expect(rendered).not_to have_link('Incidents') + end + end + end + + describe 'Serverless' do + it 'has a link to the serverless page' do + render + + expect(rendered).to have_link('Serverless', href: project_serverless_functions_path(project)) + end + + describe 'when the user does not have access' do + let(:user) { nil } + + it 'does not have a link to the serverless page' do + render + + expect(rendered).not_to have_link('Serverless') + end + end + end + + describe 'Terraform' do + it 'has a link to the terraform page' do + render + + expect(rendered).to have_link('Terraform', href: project_terraform_index_path(project)) + end + + describe 'when the user does not have access' do + let(:user) { nil } + + it 'does not have a link to the terraform page' do + render + + expect(rendered).not_to have_link('Terraform') + end + end + end + + describe 'Kubernetes' do + it 'has a link to the kubernetes page' do + render + + expect(rendered).to have_link('Kubernetes', href: project_clusters_path(project)) + end + + describe 'when the user does not have access' do + let(:user) { nil } + + it 'does not have a link to the kubernetes page' do + render + + expect(rendered).not_to have_link('Kubernetes') + end + end + end + + describe 'Environments' do + it 'has a link to the environments page' do + render + + expect(rendered).to have_link('Environments', href: project_environments_path(project)) + end + + describe 'when the user does not have access' do + let(:user) { nil } + + it 'does not have a link to the environments page' do + render + + expect(rendered).not_to have_link('Environments') + end + end + end + + describe 'Feature Flags' do + it 'has a link to the feature flags page' do + render + + expect(rendered).to have_link('Feature Flags', href: project_feature_flags_path(project)) + end + + describe 'when the user does not have access' do + let(:user) { nil } + + it 'does not have a link to the feature flags page' do + render + + expect(rendered).not_to have_link('Feature Flags') + end + end + end + + describe 'Product Analytics' do + it 'has a link to the product analytics page' do + render + + expect(rendered).to have_link('Product Analytics', href: project_product_analytics_path(project)) + end + + describe 'when feature flag :product_analytics is disabled' do + it 'does not have a link to the feature flags page' do + stub_feature_flags(product_analytics: false) + + render + + expect(rendered).not_to have_link('Product Analytics') + end + end + end + end + describe 'packages tab' do before do stub_container_registry_config(enabled: true) @@ -510,6 +742,32 @@ RSpec.describe 'layouts/nav/sidebar/_project' do end end + describe 'value stream analytics entry' do + let(:read_cycle_analytics) { true } + + before do + allow(view).to receive(:can?).with(user, :read_cycle_analytics, project).and_return(read_cycle_analytics) + end + + describe 'when value stream analytics is enabled' do + it 'shows the value stream analytics entry' do + render + + expect(rendered).to have_link('Value Stream', href: project_cycle_analytics_path(project)) + end + end + + describe 'when value stream analytics is disabled' do + let(:read_cycle_analytics) { false } + + it 'does not show the value stream analytics entry' do + render + + expect(rendered).not_to have_link('Value Stream', href: project_cycle_analytics_path(project)) + end + end + end + describe 'operations settings tab' do describe 'archive projects' do before do @@ -536,64 +794,6 @@ RSpec.describe 'layouts/nav/sidebar/_project' do end end end - - describe 'Tracing' do - it 'is not visible to unauthorized user' do - allow(view).to receive(:can?).and_return(false) - - render - - expect(rendered).not_to have_text 'Tracing' - end - - it 'links to Tracing page' do - render - - expect(rendered).to have_link('Tracing', href: project_tracing_path(project)) - end - - context 'without project.tracing_external_url' do - it 'links to Tracing page' do - render - - expect(rendered).to have_link('Tracing', href: project_tracing_path(project)) - end - end - end - - describe 'Alert Management' do - it 'shows the Alerts sidebar entry' do - render - - expect(rendered).to have_css('a[title="Alerts"]') - end - end - end - - describe 'value stream analytics entry' do - let(:read_cycle_analytics) { true } - - before do - allow(view).to receive(:can?).with(user, :read_cycle_analytics, project).and_return(read_cycle_analytics) - end - - describe 'when value stream analytics is enabled' do - it 'shows the value stream analytics entry' do - render - - expect(rendered).to have_link('Value Stream', href: project_cycle_analytics_path(project)) - end - end - - describe 'when value stream analytics is disabled' do - let(:read_cycle_analytics) { false } - - it 'does not show the value stream analytics entry' do - render - - expect(rendered).not_to have_link('Value Stream', href: project_cycle_analytics_path(project)) - end - end end describe 'project access tokens' do -- cgit v1.2.3