From 33240ecca20fdd72fd53a173f4c56f7e6e953e0f Mon Sep 17 00:00:00 2001 From: Eulyeon Ko <5961404-euko@users.noreply.gitlab.com> Date: Thu, 1 Feb 2024 00:34:05 +0000 Subject: [PATCH] Revert "Merge branch '431288-user-unassignment-note' into 'master'" This reverts merge request !143045 --- app/services/members/destroy_service.rb | 4 +-- .../members/unassign_issuables_service.rb | 34 ++----------------- .../update_assignees_service.rb | 10 +----- ee/app/services/ee/members/destroy_service.rb | 4 +-- .../unassign_issuables_service_spec.rb | 16 ++++----- .../update_assignees_service_spec.rb | 10 ------ 6 files changed, 15 insertions(+), 63 deletions(-) diff --git a/app/services/members/destroy_service.rb b/app/services/members/destroy_service.rb index 29a6c9995f9b8..14cdb83b4e5d6 100644 --- a/app/services/members/destroy_service.rb +++ b/app/services/members/destroy_service.rb @@ -47,10 +47,10 @@ def mark_as_recursive_call def enqueue_jobs_that_needs_to_be_run_only_once_per_hierarchy(member, unassign_issuables) return if recursive_call? - enqueue_cleanup_jobs_once_per_hierarchy(member, unassign_issuables) + enqueue_cleanup_jobs_once_per_heirarchy(member, unassign_issuables) end - def enqueue_cleanup_jobs_once_per_hierarchy(member, unassign_issuables) + def enqueue_cleanup_jobs_once_per_heirarchy(member, unassign_issuables) enqueue_delete_todos(member) enqueue_unassign_issuables(member) if unassign_issuables end diff --git a/app/services/members/unassign_issuables_service.rb b/app/services/members/unassign_issuables_service.rb index 90fcd547fe431..95e07deb761c4 100644 --- a/app/services/members/unassign_issuables_service.rb +++ b/app/services/members/unassign_issuables_service.rb @@ -14,40 +14,10 @@ def execute project_ids = entity.is_a?(Group) ? entity.all_projects.select(:id) : [entity.id] - unassign_from_issues(project_ids) - unassign_from_merge_requests(project_ids) + user.issue_assignees.on_issues(Issue.in_projects(project_ids).select(:id)).delete_all + user.merge_request_assignees.in_projects(project_ids).delete_all user.invalidate_cache_counts end - - private - - def unassign_from_issues(project_ids) - user.issue_assignees.on_issues(Issue.in_projects(project_ids)).select(:issue_id).each do |assignee| - issue = Issue.find(assignee.issue_id) - - Issues::UpdateService.new( - container: issue.project, - current_user: user, - params: { assignee_ids: new_assignee_ids(issue) } - ).execute(issue) - end - end - - def unassign_from_merge_requests(project_ids) - user.merge_request_assignees.in_projects(project_ids).select(:merge_request_id).each do |assignee| - merge_request = MergeRequest.find(assignee.merge_request_id) - - ::MergeRequests::UpdateAssigneesService.new( - project: merge_request.project, - current_user: user, - params: { assignee_ids: new_assignee_ids(merge_request), skip_authorization: true } - ).execute(merge_request) - end - end - - def new_assignee_ids(issuable) - issuable.assignees.map(&:id) - [user.id] - end end end diff --git a/app/services/merge_requests/update_assignees_service.rb b/app/services/merge_requests/update_assignees_service.rb index 32a47d9f2d8cb..c1e970740b97f 100644 --- a/app/services/merge_requests/update_assignees_service.rb +++ b/app/services/merge_requests/update_assignees_service.rb @@ -2,18 +2,12 @@ module MergeRequests class UpdateAssigneesService < UpdateService - def initialize(project:, current_user: nil, params: {}) - super - - @skip_authorization = @params.delete(:skip_authorization) || false - end - # a stripped down service that only does what it must to update the # assignees, and knows that it does not have to check for other updates. # This saves a lot of queries for irrelevant things that cannot possibly # change in the execution of this service. def execute(merge_request) - return merge_request unless current_user&.can?(:set_merge_request_metadata, merge_request) || skip_authorization + return merge_request unless current_user&.can?(:set_merge_request_metadata, merge_request) old_assignees = merge_request.assignees.to_a old_ids = old_assignees.map(&:id) @@ -39,8 +33,6 @@ def execute(merge_request) private - attr_reader :skip_authorization - def assignee_ids filter_sentinel_values(params.fetch(:assignee_ids)).first(1) end diff --git a/ee/app/services/ee/members/destroy_service.rb b/ee/app/services/ee/members/destroy_service.rb index 55866cac57de8..1d9cd62eccc61 100644 --- a/ee/app/services/ee/members/destroy_service.rb +++ b/ee/app/services/ee/members/destroy_service.rb @@ -97,8 +97,8 @@ def cleanup_escalation_rules(member) ::IncidentManagement::EscalationRules::DestroyService.new(escalation_rules: rules, user: member.user).execute end - override :enqueue_cleanup_jobs_once_per_hierarchy - def enqueue_cleanup_jobs_once_per_hierarchy(member, unassign_issuables) + override :enqueue_cleanup_jobs_once_per_heirarchy + def enqueue_cleanup_jobs_once_per_heirarchy(member, unassign_issuables) super enqueue_cleanup_add_on_seat_assignments(member) diff --git a/spec/services/members/unassign_issuables_service_spec.rb b/spec/services/members/unassign_issuables_service_spec.rb index dc6f93f7be09d..9623cef868b5e 100644 --- a/spec/services/members/unassign_issuables_service_spec.rb +++ b/spec/services/members/unassign_issuables_service_spec.rb @@ -14,14 +14,14 @@ describe '#execute' do RSpec.shared_examples 'un-assigning issuables' do |issue_count, mr_count, open_issue_count, open_mr_count| - # :sidekiq_inline is used b/c unlike issues, assignee changes for MRs get handled asynchronously. - it 'removes issuable assignments', :sidekiq_inline, :aggregate_failures do - expect { subject } - .to change { user.assigned_issues.count }.from(issue_count).to(0) - .and change { user.assigned_merge_requests.count }.from(mr_count).to(0) - .and change { Note.where('note ILIKE ?', '%unassigned%').count }.by( - user.assigned_issues.count + user.assigned_merge_requests.count - ) + it 'removes issuable assignments', :aggregate_failures do + expect(user.assigned_issues.count).to eq(issue_count) + expect(user.assigned_merge_requests.count).to eq(mr_count) + + subject + + expect(user.assigned_issues.count).to eq(0) + expect(user.assigned_merge_requests.count).to eq(0) end it 'invalidates user cache', :aggregate_failures, :clean_gitlab_redis_cache do diff --git a/spec/services/merge_requests/update_assignees_service_spec.rb b/spec/services/merge_requests/update_assignees_service_spec.rb index 2d7d7ad3ea15a..f9b0a993b06fb 100644 --- a/spec/services/merge_requests/update_assignees_service_spec.rb +++ b/spec/services/merge_requests/update_assignees_service_spec.rb @@ -143,16 +143,6 @@ def update_merge_request expect { update_merge_request } .not_to change { merge_request.reload.assignees.to_a } end - - context 'when skip_authorization is set' do - let(:opts) { { assignee_ids: [user2.id], skip_authorization: true } } - - it 'updates the MR assignees' do - expect { update_merge_request } - .to change { merge_request.reload.assignees } - .from([user3]).to([user2]) - end - end end end end -- GitLab