diff --git a/app/models/user.rb b/app/models/user.rb index bb8d5d24b3b2f221ced81f91ee8fec5c056f64ec..3230a18662039fa227f521e92f19c0a6ee74338f 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -197,6 +197,8 @@ def update_tracked_fields!(request) has_many :snippets, dependent: :destroy, foreign_key: :author_id # rubocop:disable Cop/ActiveRecordDependent has_many :notes, dependent: :destroy, foreign_key: :author_id # rubocop:disable Cop/ActiveRecordDependent has_many :issues, dependent: :destroy, foreign_key: :author_id # rubocop:disable Cop/ActiveRecordDependent + has_many :legacy_assigned_merge_requests, class_name: 'MergeRequest', dependent: :nullify, foreign_key: :assignee_id # rubocop:disable Cop/ActiveRecordDependent + has_many :updated_merge_requests, class_name: 'MergeRequest', dependent: :nullify, foreign_key: :updated_by_id # rubocop:disable Cop/ActiveRecordDependent has_many :updated_issues, class_name: 'Issue', dependent: :nullify, foreign_key: :updated_by_id # rubocop:disable Cop/ActiveRecordDependent has_many :closed_issues, class_name: 'Issue', dependent: :nullify, foreign_key: :closed_by_id # rubocop:disable Cop/ActiveRecordDependent has_many :merge_requests, dependent: :destroy, foreign_key: :author_id # rubocop:disable Cop/ActiveRecordDependent diff --git a/spec/services/users/destroy_service_spec.rb b/spec/services/users/destroy_service_spec.rb index b32599d4af89700571931a414e54edf1e2bd7c0d..c8ea7f704e222211e7ce3a303ca54009b656f1bb 100644 --- a/spec/services/users/destroy_service_spec.rb +++ b/spec/services/users/destroy_service_spec.rb @@ -407,6 +407,21 @@ expect(issue.updated_by).to be_nil expect(resource_label_event.user).to be_nil end + + it 'nullifies assigned_merge_requests, last_updated_merge_requests' do + merge_request = create(:merge_request, source_project: project, target_project: project, + assignee: other_user, updated_by: other_user, merge_user: other_user) + + described_class.new(user).execute(other_user, skip_authorization: true) + + merge_request.reload + + aggregate_failures do + expect(merge_request.updated_by).to be_nil + expect(merge_request.assignee).to be_nil + expect(merge_request.assignee_id).to be_nil + end + end end end