diff --git a/ee/app/models/ee/project.rb b/ee/app/models/ee/project.rb index d39a62fb6c2b192a4933051cfc8b5304680b20ff..d5712366a6b21c9c8b3ce437c052157f96a12f00 100644 --- a/ee/app/models/ee/project.rb +++ b/ee/app/models/ee/project.rb @@ -484,6 +484,12 @@ def self.cascading_with_parent_namespace(attribute) end define_method("#{attribute}?") do |inherit_group_setting: false| + if attribute == :only_allow_merge_if_pipeline_succeeds && + licensed_feature_available?(:security_orchestration_policies) && + security_policy_management_project_linked_configurations.exists? + return false + end + return super() unless licensed_feature_available?(:group_level_merge_checks_setting) if inherit_group_setting diff --git a/ee/spec/models/ee/project_spec.rb b/ee/spec/models/ee/project_spec.rb index 05e9b0c926ee70274182a16b68af5f45f516774e..7359931f2c7c58168504ad3ed3fe07959fbe103f 100644 --- a/ee/spec/models/ee/project_spec.rb +++ b/ee/spec/models/ee/project_spec.rb @@ -4263,6 +4263,29 @@ def stub_default_url_options(host) end end + describe '#only_allow_merge_if_pipeline_succeeds?' do + before do + stub_licensed_features(security_orchestration_policies: true) + project.update!(only_allow_merge_if_pipeline_succeeds: true) + end + + context 'when project is not a security policy project' do + it 'returns true' do + expect(project.only_allow_merge_if_pipeline_succeeds?).to be_truthy + end + end + + context 'when project is a security policy project' do + before do + create(:security_orchestration_policy_configuration, security_policy_management_project: project) + end + + it 'returns false' do + expect(project.only_allow_merge_if_pipeline_succeeds?).to be_falsey + end + end + end + describe '#okrs_mvc_feature_flag_enabled?' do let_it_be(:project) { create(:project) }