diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-06-16 21:25:58 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-06-16 21:25:58 +0300 |
commit | a5f4bba440d7f9ea47046a0a561d49adf0a1e6d4 (patch) | |
tree | fb69158581673816a8cd895f9d352dcb3c678b1e /spec/views | |
parent | d16b2e8639e99961de6ddc93909f3bb5c1445ba1 (diff) |
Add latest changes from gitlab-org/gitlab@14-0-stable-eev14.0.0-rc42
Diffstat (limited to 'spec/views')
11 files changed, 87 insertions, 159 deletions
diff --git a/spec/views/admin/users/_user.html.haml_spec.rb b/spec/views/admin/users/_user.html.haml_spec.rb deleted file mode 100644 index aed05e4ea9b..00000000000 --- a/spec/views/admin/users/_user.html.haml_spec.rb +++ /dev/null @@ -1,51 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe 'admin/users/_user.html.haml' do - before do - allow(view).to receive(:user).and_return(user) - end - - context 'internal users' do - context 'when showing a `Ghost User`' do - let(:user) { create(:user, :ghost) } - - it 'does not render action buttons' do - render - - expect(rendered).not_to have_selector('.table-action-buttons') - end - end - - context 'when showing a `Bot User`' do - let(:user) { create(:user, user_type: :alert_bot) } - - it 'does not render action buttons' do - render - - expect(rendered).not_to have_selector('.table-action-buttons') - end - end - - context 'when showing a `Migration User`' do - let(:user) { create(:user, user_type: :migration_bot) } - - it 'does not render action buttons' do - render - - expect(rendered).not_to have_selector('.table-action-buttons') - end - end - end - - context 'when showing an external user' do - let(:user) { create(:user) } - - it 'renders action buttons' do - render - - expect(rendered).to have_selector('.table-action-buttons') - end - end -end diff --git a/spec/views/devise/shared/_signup_box.html.haml_spec.rb b/spec/views/devise/shared/_signup_box.html.haml_spec.rb index b73e32fa765..6efb2730964 100644 --- a/spec/views/devise/shared/_signup_box.html.haml_spec.rb +++ b/spec/views/devise/shared/_signup_box.html.haml_spec.rb @@ -9,7 +9,7 @@ RSpec.describe 'devise/shared/_signup_box' do allow(view).to receive(:url).and_return('_url_') allow(view).to receive(:terms_path).and_return('_terms_path_') allow(view).to receive(:button_text).and_return('_button_text_') - allow(view).to receive(:suggestion_path).and_return('_suggestion_path_') + allow(view).to receive(:signup_username_data_attributes).and_return({}) stub_template 'devise/shared/_error_messages.html.haml' => '' end diff --git a/spec/views/layouts/header/_new_dropdown.haml_spec.rb b/spec/views/layouts/header/_new_dropdown.haml_spec.rb index bf81ab577f7..319e7b55fc3 100644 --- a/spec/views/layouts/header/_new_dropdown.haml_spec.rb +++ b/spec/views/layouts/header/_new_dropdown.haml_spec.rb @@ -52,7 +52,6 @@ RSpec.describe 'layouts/header/_new_dropdown' do end it 'has a "New project" link' do - render('layouts/header/new_repo_experiment') render expect(rendered).to have_link('New project', href: new_project_path(namespace_id: group.id)) @@ -164,7 +163,6 @@ RSpec.describe 'layouts/header/_new_dropdown' do end it 'has a "New project" link' do - render('layouts/header/new_repo_experiment') render expect(rendered).to have_link('New project', href: new_project_path) @@ -182,13 +180,13 @@ RSpec.describe 'layouts/header/_new_dropdown' do expect(rendered).to have_link('New snippet', href: new_snippet_path) end - context 'when the user is not allowed to create snippets' do + context 'when the user is not allowed to do anything' do let(:user) { create(:user, :external) } - it 'has no "New snippet" link' do - render - - expect(rendered).not_to have_link('New snippet', href: new_snippet_path) + it 'is nil' do + # We have to us `view.render` because `render` causes issues + # https://github.com/rails/rails/issues/41320 + expect(view.render("layouts/header/new_dropdown")).to be_nil end end end diff --git a/spec/views/layouts/nav/sidebar/_group.html.haml_spec.rb b/spec/views/layouts/nav/sidebar/_group.html.haml_spec.rb index d96052d4c03..50390964e1b 100644 --- a/spec/views/layouts/nav/sidebar/_group.html.haml_spec.rb +++ b/spec/views/layouts/nav/sidebar/_group.html.haml_spec.rb @@ -12,11 +12,19 @@ RSpec.describe 'layouts/nav/sidebar/_group' do it_behaves_like 'has nav sidebar' it_behaves_like 'sidebar includes snowplow attributes', 'render', 'groups_side_navigation', 'groups_side_navigation' - describe 'Group information' do + describe 'Group context menu' do it 'has a link to the group path' do render - expect(rendered).to have_link('Group information', href: group_path(group)) + expect(rendered).to have_link(group.name, href: group_path(group)) + end + end + + describe 'Group information' do + it 'has a link to the group activity path' do + render + + expect(rendered).to have_link('Group information', href: activity_group_path(group)) end it 'does not have a link to the details menu item' do 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 7cb49f635af..c775574091e 100644 --- a/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb +++ b/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb @@ -19,21 +19,32 @@ RSpec.describe 'layouts/nav/sidebar/_project' do it_behaves_like 'has nav sidebar' - describe 'Project information' do + describe 'Project context' do it 'has a link to the project path' do render - expect(rendered).to have_link('Project information', href: project_path(project), class: %w(shortcuts-project rspec-project-link)) + expect(rendered).to have_link(project.name, href: project_path(project), class: %w(shortcuts-project rspec-project-link)) + expect(rendered).to have_selector("[aria-label=\"#{project.name}\"]") + end + end + + describe 'Project information' do + it 'has a link to the project activity path' do + render + + expect(rendered).to have_link('Project information', href: activity_project_path(project), class: %w(shortcuts-project-information)) expect(rendered).to have_selector('[aria-label="Project information"]') end context 'when feature flag :sidebar_refactor is disabled' do - it 'has a link to the project path' do + before do stub_feature_flags(sidebar_refactor: false) + end + it 'has a link to the project path' do render - expect(rendered).to have_link('Project overview', href: project_path(project), class: %w(shortcuts-project rspec-project-link)) + expect(rendered).to have_link('Project overview', href: project_path(project), class: %w(shortcuts-project)) expect(rendered).to have_selector('[aria-label="Project overview"]') end end @@ -89,7 +100,7 @@ RSpec.describe 'layouts/nav/sidebar/_project' do it 'has a link to the labels path' do render - expect(page.at_css('.shortcuts-project').parent.css('[aria-label="Labels"]')).not_to be_empty + expect(page.at_css('.shortcuts-project-information').parent.css('[aria-label="Labels"]')).not_to be_empty expect(rendered).to have_link('Labels', href: project_labels_path(project)) end @@ -110,7 +121,7 @@ RSpec.describe 'layouts/nav/sidebar/_project' do it 'has a link to the members page' do render - expect(page.at_css('.shortcuts-project').parent.css('[aria-label="Members"]')).not_to be_empty + expect(page.at_css('.shortcuts-project-information').parent.css('[aria-label="Members"]')).not_to be_empty expect(rendered).to have_link('Members', href: project_project_members_path(project)) end @@ -277,7 +288,7 @@ RSpec.describe 'layouts/nav/sidebar/_project' do let(:external_issue_tracker_url) { 'http://test.com' } let!(:external_issue_tracker) do - create(:custom_issue_tracker_service, active: external_issue_tracker_active, project: project, project_url: external_issue_tracker_url) + create(:custom_issue_tracker_integration, active: external_issue_tracker_active, project: project, project_url: external_issue_tracker_url) end context 'when external issue tracker is configured and active' do @@ -994,7 +1005,7 @@ RSpec.describe 'layouts/nav/sidebar/_project' do end describe 'Confluence' do - let!(:service) { create(:confluence_service, project: project, active: active) } + let!(:service) { create(:confluence_integration, project: project, active: active) } before do render @@ -1327,4 +1338,22 @@ RSpec.describe 'layouts/nav/sidebar/_project' do end it_behaves_like 'sidebar includes snowplow attributes', 'render', 'projects_side_navigation', 'projects_side_navigation' + + describe 'Collapsed menu items' do + it 'does not render the collapsed top menu as a link' do + render + + expect(rendered).not_to have_selector('.sidebar-sub-level-items > li.fly-out-top-item > a') + end + + context 'when feature flag :sidebar_refactor is disabled' do + it 'renders the collapsed top menu as a link' do + stub_feature_flags(sidebar_refactor: false) + + render + + expect(rendered).to have_selector('.sidebar-sub-level-items > li.fly-out-top-item > a') + end + end + end end diff --git a/spec/views/projects/clusters/clusters/gcp/_form.html.haml_spec.rb b/spec/views/projects/clusters/clusters/gcp/_form.html.haml_spec.rb index bf5cb6fb25d..5120998ded6 100644 --- a/spec/views/projects/clusters/clusters/gcp/_form.html.haml_spec.rb +++ b/spec/views/projects/clusters/clusters/gcp/_form.html.haml_spec.rb @@ -23,16 +23,4 @@ RSpec.describe 'clusters/clusters/gcp/_form' do expect(rendered).to have_selector("input[id='cluster_provider_gcp_attributes_cloud_run']") end end - - context 'with cloud run feature flag disabled' do - before do - stub_feature_flags(create_cloud_run_clusters: false) - end - - it 'does not have a cloud run checkbox' do - render - - expect(rendered).not_to have_selector("input[id='cluster_provider_gcp_attributes_cloud_run']") - end - end end diff --git a/spec/views/projects/empty.html.haml_spec.rb b/spec/views/projects/empty.html.haml_spec.rb index dd7b1bd94a9..7fa95507f75 100644 --- a/spec/views/projects/empty.html.haml_spec.rb +++ b/spec/views/projects/empty.html.haml_spec.rb @@ -46,47 +46,36 @@ RSpec.describe 'projects/empty' do end end - describe 'invite_members_empty_project_version_a experiment' do + context 'with invite button on empty projects' do let(:can_import_members) { true } before do allow(view).to receive(:can_import_members?).and_return(can_import_members) end - shared_examples_for 'no invite member info' do - it 'does not show invite member info' do - render + it 'shows invite members info', :aggregate_failures do + render - expect(rendered).not_to have_content('Invite your team') - end + expect(rendered).to have_selector('[data-track-event=render]') + expect(rendered).to have_selector('[data-track-label=invite_members_empty_project]') + expect(rendered).to have_content('Invite your team') + expect(rendered).to have_content('Add members to this project and start collaborating with your team.') + expect(rendered).to have_selector('.js-invite-members-trigger') + expect(rendered).to have_selector('.js-invite-members-modal') + expect(rendered).to have_selector('[data-label=invite_members_empty_project]') + expect(rendered).to have_selector('[data-event=click_button]') end - context 'when experiment is enabled' do - it 'shows invite members info', :aggregate_failures do - render - - expect(rendered).to have_selector('[data-track-event=render]') - expect(rendered).to have_selector('[data-track-label=invite_members_empty_project]', count: 2) - expect(rendered).to have_content('Invite your team') - expect(rendered).to have_content('Add members to this project and start collaborating with your team.') - expect(rendered).to have_link('Invite members', href: project_project_members_path(project, sort: :access_level_desc)) - expect(rendered).to have_selector('[data-track-event=click_button]') - end + context 'when user does not have permissions to invite members' do + let(:can_import_members) { false } - context 'when user does not have permissions to invite members' do - let(:can_import_members) { false } - - it_behaves_like 'no invite member info' - end - end + it 'does not show invite member info', :aggregate_failures do + render - context 'when experiment is not enabled' do - before do - allow(view).to receive(:experiment_enabled?) - .with(:invite_members_empty_project_version_a).and_return(false) + expect(rendered).not_to have_content('Invite your team') + expect(rendered).not_to have_selector('.js-invite-members-trigger') + expect(rendered).not_to have_selector('.js-invite-members-modal') end - - it_behaves_like 'no invite member info' end end end diff --git a/spec/views/projects/services/_form.haml_spec.rb b/spec/views/projects/services/_form.haml_spec.rb index 4ca64eb3129..f063e73dae4 100644 --- a/spec/views/projects/services/_form.haml_spec.rb +++ b/spec/views/projects/services/_form.haml_spec.rb @@ -11,19 +11,18 @@ RSpec.describe 'projects/services/_form' do allow(controller).to receive(:current_user).and_return(user) - allow(view).to receive_messages(current_user: user, - can?: true, - current_application_settings: Gitlab::CurrentSettings.current_application_settings, - request: double(referrer: '/services')) + allow(view).to receive_messages( + current_user: user, + can?: true, + current_application_settings: Gitlab::CurrentSettings.current_application_settings, + integration: project.redmine_service, + request: double(referer: '/services') + ) end context 'commit_events and merge_request_events' do - before do - assign(:service, project.redmine_service) - end - it 'display merge_request_events and commit_events descriptions' do - allow(RedmineService).to receive(:supported_events).and_return(%w(commit merge_request)) + allow(Integrations::Redmine).to receive(:supported_events).and_return(%w(commit merge_request)) render diff --git a/spec/views/projects/services/edit.html.haml_spec.rb b/spec/views/projects/services/edit.html.haml_spec.rb index 785af6a5344..a5460adbd2c 100644 --- a/spec/views/projects/services/edit.html.haml_spec.rb +++ b/spec/views/projects/services/edit.html.haml_spec.rb @@ -3,12 +3,12 @@ require 'spec_helper' RSpec.describe 'projects/services/edit' do - let(:service) { create(:drone_ci_service, project: project) } + let(:integration) { create(:drone_ci_integration, project: project) } let(:project) { create(:project) } before do assign :project, project - assign :service, service + assign :integration, integration end it do @@ -17,7 +17,7 @@ RSpec.describe 'projects/services/edit' do expect(rendered).not_to have_text('Recent Deliveries') end - context 'service using WebHooks' do + context 'integration using WebHooks' do before do assign(:web_hook_logs, []) end diff --git a/spec/views/projects/settings/operations/show.html.haml_spec.rb b/spec/views/projects/settings/operations/show.html.haml_spec.rb index ab868eb78b8..43c064e1a2b 100644 --- a/spec/views/projects/settings/operations/show.html.haml_spec.rb +++ b/spec/views/projects/settings/operations/show.html.haml_spec.rb @@ -36,7 +36,7 @@ RSpec.describe 'projects/settings/operations/show' do it 'renders the Operations Settings page' do render - expect(rendered).to have_content _('Alert integrations') + expect(rendered).to have_content _('Alerts') expect(rendered).to have_content _('Display alerts from all configured monitoring tools.') end end @@ -59,7 +59,7 @@ RSpec.describe 'projects/settings/operations/show' do expect(rendered).to have_content _('Prometheus') expect(rendered).to have_content _('Link Prometheus monitoring to GitLab.') - expect(rendered).to have_content _('To enable the installation of Prometheus on your clusters, deactivate the manual configuration.') + expect(rendered).to have_content _('To use a Prometheus installed on a cluster, deactivate the manual configuration.') end end @@ -77,41 +77,11 @@ RSpec.describe 'projects/settings/operations/show' do end describe 'Operations > Tracing' do - context 'with project.tracing_external_url' do - it 'links to project.tracing_external_url' do - render - - expect(rendered).to have_link('Tracing', href: tracing_setting.external_url) - end - - context 'with malicious external_url' do - let(:malicious_tracing_url) { "https://replaceme.com/'><script>alert(document.cookie)</script>" } - let(:cleaned_url) { "https://replaceme.com/'>" } - - before do - tracing_setting.update_column(:external_url, malicious_tracing_url) - end - - it 'sanitizes external_url' do - render - - expect(tracing_setting.external_url).to eq(malicious_tracing_url) - expect(rendered).to have_link('Tracing', href: cleaned_url) - end - end - end - - context 'without project.tracing_external_url' do - let(:tracing_setting) { build(:project_tracing_setting, project: project) } - - before do - tracing_setting.external_url = nil - end - - it 'links to Tracing page' do + context 'Settings page ' do + it 'renders the Tracing Settings page' do render - expect(rendered).to have_link('Tracing', href: project_tracing_path(project)) + expect(rendered).to have_content _('Embed an image of your existing Jaeger server in GitLab.') end end end diff --git a/spec/views/shared/nav/_sidebar.html.haml_spec.rb b/spec/views/shared/nav/_sidebar.html.haml_spec.rb index cf9452ba68c..2eeebdff7a8 100644 --- a/spec/views/shared/nav/_sidebar.html.haml_spec.rb +++ b/spec/views/shared/nav/_sidebar.html.haml_spec.rb @@ -25,13 +25,11 @@ RSpec.describe 'shared/nav/_sidebar.html.haml' do context 'when sidebar does not have a scope menu' do let(:scope_menu_view_path) { 'shared/nav/' } let(:scope_menu_view_name) { 'scope_menu.html.haml' } - let(:scope_menu_view) { "#{scope_menu_view_path}#{scope_menu_view_name}" } let(:scope_menu_partial) { "#{scope_menu_view_path}_#{scope_menu_view_name}" } let(:content) { 'Custom test content' } context 'when sidebar has a custom scope menu partial defined' do it 'renders the custom partial' do - allow(sidebar).to receive(:render_raw_scope_menu_partial).and_return(scope_menu_view) allow(view).to receive(:scope_menu).and_return(nil) stub_template(scope_menu_partial => content) |