40 lines
1 KiB
Ruby
40 lines
1 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
|