From 962afb3da11a72c7fca322378886b2c0be9f3385 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Thu, 18 May 2023 03:07:23 +0000 Subject: Add latest changes from gitlab-org/gitlab@master --- .../profiles/preferences_controller_spec.rb | 1 + spec/helpers/users_helper_spec.rb | 32 +++++++++++ spec/models/user_preference_spec.rb | 14 +++++ spec/models/user_spec.rb | 3 ++ spec/requests/abuse_reports_controller_spec.rb | 12 ++--- .../services/merge_requests/update_service_spec.rb | 28 +++++----- spec/views/projects/_files.html.haml_spec.rb | 62 ++++++++++++++++++++++ 7 files changed, 130 insertions(+), 22 deletions(-) create mode 100644 spec/views/projects/_files.html.haml_spec.rb (limited to 'spec') diff --git a/spec/controllers/profiles/preferences_controller_spec.rb b/spec/controllers/profiles/preferences_controller_spec.rb index e2ade5e3de9..f5c97f63293 100644 --- a/spec/controllers/profiles/preferences_controller_spec.rb +++ b/spec/controllers/profiles/preferences_controller_spec.rb @@ -53,6 +53,7 @@ RSpec.describe Profiles::PreferencesController do first_day_of_week: '1', preferred_language: 'jp', tab_width: '5', + project_shortcut_buttons: 'true', render_whitespace_in_code: 'true' }.with_indifferent_access diff --git a/spec/helpers/users_helper_spec.rb b/spec/helpers/users_helper_spec.rb index f26c37a5ff2..0a259b80219 100644 --- a/spec/helpers/users_helper_spec.rb +++ b/spec/helpers/users_helper_spec.rb @@ -561,4 +561,36 @@ RSpec.describe UsersHelper do end end end + + describe '#moderation_status', feature_category: :instance_resiliency do + let(:user) { create(:user) } + + subject { moderation_status(user) } + + context 'when user is nil' do + let(:user) { nil } + + it { is_expected.to be_nil } + end + + context 'when a user is banned' do + before do + user.ban! + end + + it { is_expected.to eq('Banned') } + end + + context 'when a user is blocked' do + before do + user.block! + end + + it { is_expected.to eq('Blocked') } + end + + context 'when a user is active' do + it { is_expected.to eq('Active') } + end + end end diff --git a/spec/models/user_preference_spec.rb b/spec/models/user_preference_spec.rb index 1d7ecb724bf..17899012aaa 100644 --- a/spec/models/user_preference_spec.rb +++ b/spec/models/user_preference_spec.rb @@ -225,6 +225,20 @@ RSpec.describe UserPreference, feature_category: :user_profile do end end + describe '#project_shortcut_buttons' do + it 'is set to true by default' do + pref = described_class.new + + expect(pref.project_shortcut_buttons).to eq(true) + end + + it 'returns assigned value' do + pref = described_class.new(project_shortcut_buttons: false) + + expect(pref.project_shortcut_buttons).to eq(false) + end + end + describe '#render_whitespace_in_code' do it 'is set to false by default' do pref = described_class.new diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index c73dac7251e..b2f695c8b5a 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -60,6 +60,9 @@ RSpec.describe User, feature_category: :user_profile do it { is_expected.to delegate_method(:setup_for_company).to(:user_preference) } it { is_expected.to delegate_method(:setup_for_company=).to(:user_preference).with_arguments(:args) } + it { is_expected.to delegate_method(:project_shortcut_buttons).to(:user_preference) } + it { is_expected.to delegate_method(:project_shortcut_buttons=).to(:user_preference).with_arguments(:args) } + it { is_expected.to delegate_method(:render_whitespace_in_code).to(:user_preference) } it { is_expected.to delegate_method(:render_whitespace_in_code=).to(:user_preference).with_arguments(:args) } diff --git a/spec/requests/abuse_reports_controller_spec.rb b/spec/requests/abuse_reports_controller_spec.rb index 4b81394aea3..69b0fb41330 100644 --- a/spec/requests/abuse_reports_controller_spec.rb +++ b/spec/requests/abuse_reports_controller_spec.rb @@ -44,14 +44,14 @@ RSpec.describe AbuseReportsController, feature_category: :insider_threat do end end - context 'when the user has already been blocked' do + context 'when the user has already been banned' do it 'redirects the reporter to the user\'s profile' do - user.block + user.ban get new_abuse_report_path(user_id: user.id) expect(response).to redirect_to user - expect(flash[:alert]).to eq(_('Cannot create the abuse report. This user has been blocked.')) + expect(flash[:alert]).to eq(_('Cannot create the abuse report. This user has been banned.')) end end end @@ -127,16 +127,16 @@ RSpec.describe AbuseReportsController, feature_category: :insider_threat do end end - context 'when the user has already been blocked' do + context 'when the user has already been banned' do let(:request_params) { { user_id: user.id, abuse_report: { category: abuse_category } } } it 'redirects the reporter to the user\'s profile' do - user.block + user.ban subject expect(response).to redirect_to user - expect(flash[:alert]).to eq(_('Cannot create the abuse report. This user has been blocked.')) + expect(flash[:alert]).to eq(_('Cannot create the abuse report. This user has been banned.')) end end end diff --git a/spec/services/merge_requests/update_service_spec.rb b/spec/services/merge_requests/update_service_spec.rb index 012eb5f6fca..e9853642e76 100644 --- a/spec/services/merge_requests/update_service_spec.rb +++ b/spec/services/merge_requests/update_service_spec.rb @@ -496,13 +496,11 @@ RSpec.describe MergeRequests::UpdateService, :mailer, feature_category: :code_re before do merge_request.merge_error = 'Error' - perform_enqueued_jobs do - service.execute(merge_request) - @merge_request = MergeRequest.find(merge_request.id) - end + service.execute(merge_request) + @merge_request = MergeRequest.find(merge_request.id) end - it 'merges the MR', :sidekiq_might_not_need_inline do + it 'merges the MR', :sidekiq_inline do expect(@merge_request).to be_valid expect(@merge_request.state).to eq('merged') expect(@merge_request.merge_error).to be_nil @@ -517,13 +515,11 @@ RSpec.describe MergeRequests::UpdateService, :mailer, feature_category: :code_re sha: merge_request.diff_head_sha, status: :success) - perform_enqueued_jobs do - @merge_request = service.execute(merge_request) - @merge_request = MergeRequest.find(merge_request.id) - end + @merge_request = service.execute(merge_request) + @merge_request = MergeRequest.find(merge_request.id) end - it 'merges the MR', :sidekiq_might_not_need_inline do + it 'merges the MR', :sidekiq_inline do expect(@merge_request).to be_valid expect(@merge_request.state).to eq('merged') end @@ -674,7 +670,7 @@ RSpec.describe MergeRequests::UpdateService, :mailer, feature_category: :code_re expect(Todo.where(attributes).count).to eq 1 end - it 'sends email reviewer change notifications to old and new reviewers', :sidekiq_might_not_need_inline do + it 'sends email reviewer change notifications to old and new reviewers', :sidekiq_inline do merge_request.reviewers = [user2] perform_enqueued_jobs do @@ -719,7 +715,7 @@ RSpec.describe MergeRequests::UpdateService, :mailer, feature_category: :code_re end end - it 'sends notifications for subscribers of changed milestone', :sidekiq_might_not_need_inline do + it 'sends notifications for subscribers of changed milestone', :sidekiq_inline do merge_request.milestone = create(:milestone, project: project) merge_request.save! @@ -751,7 +747,7 @@ RSpec.describe MergeRequests::UpdateService, :mailer, feature_category: :code_re update_merge_request(milestone_id: create(:milestone, project: project).id) end - it 'sends notifications for subscribers of changed milestone', :sidekiq_might_not_need_inline do + it 'sends notifications for subscribers of changed milestone', :sidekiq_inline do perform_enqueued_jobs do update_merge_request(milestone_id: create(:milestone, project: project).id) end @@ -867,7 +863,7 @@ RSpec.describe MergeRequests::UpdateService, :mailer, feature_category: :code_re merge_request.update_attribute(:title, draft_title) end - it 'sends notifications for subscribers', :sidekiq_might_not_need_inline do + it 'sends notifications for subscribers', :sidekiq_inline do opts = { title: 'New title' } perform_enqueued_jobs do @@ -899,7 +895,7 @@ RSpec.describe MergeRequests::UpdateService, :mailer, feature_category: :code_re merge_request.update_attribute(:title, title) end - it 'does not send notifications', :sidekiq_might_not_need_inline do + it 'does not send notifications', :sidekiq_inline do opts = { title: 'Draft: New title' } perform_enqueued_jobs do @@ -936,7 +932,7 @@ RSpec.describe MergeRequests::UpdateService, :mailer, feature_category: :code_re project.add_developer(subscriber) end - it 'sends notifications for subscribers of newly added labels', :sidekiq_might_not_need_inline do + it 'sends notifications for subscribers of newly added labels', :sidekiq_inline do opts = { label_ids: [label.id] } perform_enqueued_jobs do diff --git a/spec/views/projects/_files.html.haml_spec.rb b/spec/views/projects/_files.html.haml_spec.rb new file mode 100644 index 00000000000..618a0948739 --- /dev/null +++ b/spec/views/projects/_files.html.haml_spec.rb @@ -0,0 +1,62 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'projects/_files', feature_category: :projects do + let_it_be(:template) { 'projects/files' } + let_it_be(:namespace) { build_stubbed(:namespace) } + let_it_be(:user) { build_stubbed(:user, namespace: namespace) } + let_it_be(:project) { build_stubbed(:project, namespace: namespace) } + + before do + assign(:project, project) + assign(:path, '/job_path') + assign(:ref, 'main') + # used by project_new_blob_path + assign(:id, '1') + + allow(project).to receive(:statistics_buttons).and_return([]) + end + + context 'when the user disabled project shortcut buttons' do + before do + allow(view).to receive(:current_user).and_return(user) + allow(user).to receive(:project_shortcut_buttons).and_return(false) + end + + it 'does not render buttons' do + render(template, is_project_overview: true) + + expect(rendered).not_to have_selector('.js-show-on-project-root') + end + end + + context 'when the user has project shortcut buttons enabled' do + before do + allow(view).to receive(:current_user).and_return(user) + allow(user).to receive(:project_shortcut_buttons).and_return(true) + end + + it 'renders buttons' do + render(template, is_project_overview: true) + + expect(rendered).to have_selector('.js-show-on-project-root') + end + end + + context 'when rendered in the project overview page and there is no current user' do + it 'renders buttons' do + render(template, is_project_overview: true) + + expect(rendered).to have_selector('.js-show-on-project-root') + end + end + + context 'when rendered in a page other than project overview' do + it 'does not render buttons' do + render(template, is_project_overview: false) + + expect(rendered).not_to have_selector('.js-show-on-project-root') + end + end +end -- cgit v1.2.3