diff --git a/ee/app/assets/javascripts/approvals/mappers.js b/ee/app/assets/javascripts/approvals/mappers.js index 148e28febda4fa8274480544cdb2c8ebb487b14c..51418a1e9e6600fcdbcd56ba9c57be6bda77c4f5 100644 --- a/ee/app/assets/javascripts/approvals/mappers.js +++ b/ee/app/assets/javascripts/approvals/mappers.js @@ -18,7 +18,7 @@ export const mapApprovalRuleResponse = res => ({ hasSource: Boolean(res.source_rule), name: res.name, approvalsRequired: res.approvals_required, - minApprovalsRequired: res.source_rule ? res.source_rule.approvals_required : 0, + minApprovalsRequired: 0, approvers: res.approvers, containsHiddenGroups: res.contains_hidden_groups, users: res.users, @@ -41,7 +41,7 @@ export const mapMRSourceRule = ({ id, ...rule }) => ({ ...rule, hasSource: true, sourceId: id, - minApprovalsRequired: rule.approvalsRequired || 0, + minApprovalsRequired: 0, }); /** diff --git a/ee/app/models/approval_merge_request_rule.rb b/ee/app/models/approval_merge_request_rule.rb index f6d9f8937b26be6a948d87463a833e35321c8971..bd48ff6e379f2bb9f6cb4cb0a2ee3b5ee2b41a1b 100644 --- a/ee/app/models/approval_merge_request_rule.rb +++ b/ee/app/models/approval_merge_request_rule.rb @@ -38,7 +38,6 @@ class ApprovalMergeRequestRule < ApplicationRecord has_one :approval_project_rule, through: :approval_merge_request_rule_source alias_method :source_rule, :approval_project_rule - validate :validate_approvals_required, unless: :report_approver? validate :validate_approval_project_rule enum rule_type: { @@ -116,15 +115,6 @@ def sync_approved_approvers private - def validate_approvals_required - return unless approval_project_rule - return unless approvals_required_changed? - - if approvals_required < approval_project_rule.approvals_required - errors.add(:approvals_required, :greater_than_or_equal_to, count: approval_project_rule.approvals_required) - end - end - def validate_approval_project_rule return if approval_project_rule.blank? return if merge_request.project == approval_project_rule.project diff --git a/ee/changelogs/unreleased/12607-allow-lower-approvals-required.yml b/ee/changelogs/unreleased/12607-allow-lower-approvals-required.yml new file mode 100644 index 0000000000000000000000000000000000000000..ae363d24e396a9469e4b73a3ff65db1e317d08bc --- /dev/null +++ b/ee/changelogs/unreleased/12607-allow-lower-approvals-required.yml @@ -0,0 +1,5 @@ +--- +title: Allow approvals_required to be lower than project +merge_request: 14902 +author: +type: changed diff --git a/ee/spec/models/approval_merge_request_rule_spec.rb b/ee/spec/models/approval_merge_request_rule_spec.rb index 59e714b82f02f53677902fde1def95d5b544053e..0bf3ad30824de1ea434eee2eeb2c7723e5b1caf9 100644 --- a/ee/spec/models/approval_merge_request_rule_spec.rb +++ b/ee/spec/models/approval_merge_request_rule_spec.rb @@ -278,33 +278,6 @@ subject.assign_attributes(approvals_required: -1) expect(subject).to be_invalid end - - context 'when project rule is present' do - let(:project_rule) { create(:approval_project_rule, project: merge_request.project, approvals_required: 3) } - - it 'has to be greater than or equal to project rule approvals_required' do - subject.assign_attributes(approval_project_rule: project_rule, approvals_required: 2) - subject.valid? - - expect(subject.errors[:approvals_required]).to include("must be greater than or equal to 3") - end - - context 'when report_approver rule' do - subject do - build(:report_approver_rule, merge_request: merge_request, approvals_required: 1).tap do |rule| - rule.approval_project_rule = project_rule - end - end - - it 'skips validation' do - expect(subject).to be_valid - - subject.approvals_required = 0 - - expect(subject).to be_valid - end - end - end end end end