gitlab-org--gitlab-foss/app/models/merge_request/approval_removal_settings.rb

40 lines
1.0 KiB
Ruby

# frozen_string_literal: true
class MergeRequest::ApprovalRemovalSettings # rubocop:disable Style/ClassAndModuleChildren
include ActiveModel::Validations
attr_accessor :project
validate :mutually_exclusive_settings
def initialize(project, reset_approvals_on_push, selective_code_owner_removals)
@project = project
@reset_approvals_on_push = reset_approvals_on_push
@selective_code_owner_removals = selective_code_owner_removals
end
private
def selective_code_owner_removals
if @selective_code_owner_removals.nil?
project.project_setting.selective_code_owner_removals
else
@selective_code_owner_removals
end
end
def reset_approvals_on_push
if @reset_approvals_on_push.nil?
project.reset_approvals_on_push
else
@reset_approvals_on_push
end
end
def mutually_exclusive_settings
return unless selective_code_owner_removals && reset_approvals_on_push
errors.add(:base, 'selective_code_owner_removals can only be enabled when reset_approvals_on_push is disabled')
end
end