diff --git a/app/serializers/merge_request_poll_cached_widget_entity.rb b/app/serializers/merge_request_poll_cached_widget_entity.rb index df119d8516b79529a76f02160827d47a63d64eda..a246caf0faf932d3474ee38580db198c412833de 100644 --- a/app/serializers/merge_request_poll_cached_widget_entity.rb +++ b/app/serializers/merge_request_poll_cached_widget_entity.rb @@ -29,7 +29,11 @@ class MergeRequestPollCachedWidgetEntity < IssuableEntity end expose :commits_without_merge_commits, using: MergeRequestWidgetCommitEntity do |merge_request| - merge_request.recent_commits.without_merge_commits + if Feature.enabled?(:disable_widget_responses, merge_request.target_project) + [] + else + merge_request.recent_commits.without_merge_commits + end end expose :diff_head_sha do |merge_request| diff --git a/app/serializers/merge_request_poll_widget_entity.rb b/app/serializers/merge_request_poll_widget_entity.rb index 3617713d03d70bd0fcac3f9e47cfffc7379fd073..eeac341aa72cb618c8e08d5aabf3bc6919dc193a 100644 --- a/app/serializers/merge_request_poll_widget_entity.rb +++ b/app/serializers/merge_request_poll_widget_entity.rb @@ -29,7 +29,11 @@ class MergeRequestPollWidgetEntity < Grape::Entity end expose :default_merge_commit_message_with_description do |merge_request| - merge_request.default_merge_commit_message(include_description: true) + if Feature.enabled?(:disable_widget_responses, merge_request.target_project) + '' + else + merge_request.default_merge_commit_message(include_description: true) + end end expose :only_allow_merge_if_pipeline_succeeds do |merge_request| diff --git a/config/feature_flags/gitlab_com_derisk/disable_widget_responses.yml b/config/feature_flags/gitlab_com_derisk/disable_widget_responses.yml new file mode 100644 index 0000000000000000000000000000000000000000..7292300c20186ec734d0272a5a23f4760f4f537b --- /dev/null +++ b/config/feature_flags/gitlab_com_derisk/disable_widget_responses.yml @@ -0,0 +1,9 @@ +--- +name: disable_widget_responses +feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/520302 +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/182725 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/521327 +milestone: '17.10' +group: group::source code +type: gitlab_com_derisk +default_enabled: false diff --git a/spec/serializers/merge_request_poll_cached_widget_entity_spec.rb b/spec/serializers/merge_request_poll_cached_widget_entity_spec.rb index 458d9ecd916773fadf4c4f6b9cd6b5246243e91e..da20e56f2922cc10588f8641fc68fb6d85dbea43 100644 --- a/spec/serializers/merge_request_poll_cached_widget_entity_spec.rb +++ b/spec/serializers/merge_request_poll_cached_widget_entity_spec.rb @@ -174,13 +174,23 @@ def find_matching_commit(short_id) resource.commits.find { |c| c.short_id == short_id } end - it 'does not include merge commits' do - commits_in_widget = subject[:commits_without_merge_commits] + it 'returns empty array' do + expect(subject[:commits_without_merge_commits]).to eq([]) + end + + context 'when "disable_widget_responses" is disabled' do + before do + stub_feature_flags(disable_widget_responses: false) + end + + it 'does not include merge commits' do + commits_in_widget = subject[:commits_without_merge_commits] - expect(commits_in_widget.length).to be < resource.commits.length - expect(commits_in_widget.length).to eq(resource.commits.without_merge_commits.length) - commits_in_widget.each do |c| - expect(find_matching_commit(c[:short_id]).merge_commit?).to eq(false) + expect(commits_in_widget.length).to be < resource.commits.length + expect(commits_in_widget.length).to eq(resource.commits.without_merge_commits.length) + commits_in_widget.each do |c| + expect(find_matching_commit(c[:short_id]).merge_commit?).to eq(false) + end end end end @@ -210,6 +220,7 @@ def find_matching_commit(short_id) context 'when merge request is mergeable' do before do stub_const('MergeRequestDiff::COMMITS_SAFE_SIZE', 20) + stub_feature_flags(disable_widget_responses: false) end it 'has default_squash_commit_message and commits_without_merge_commits' do diff --git a/spec/serializers/merge_request_poll_widget_entity_spec.rb b/spec/serializers/merge_request_poll_widget_entity_spec.rb index 7101f465de4a712d4dfa1a169f0bf4831a1730cd..15388937676949663a9c9107b67f4efb4fb3eb26 100644 --- a/spec/serializers/merge_request_poll_widget_entity_spec.rb +++ b/spec/serializers/merge_request_poll_widget_entity_spec.rb @@ -17,9 +17,21 @@ described_class.new(resource, { request: request }.merge(options)).as_json end - it 'has default_merge_commit_message_with_description' do - expect(subject[:default_merge_commit_message_with_description]) - .to eq(resource.default_merge_commit_message(include_description: true)) + describe '#default_merge_commit_message_with_description' do + it 'returns empty string' do + expect(subject[:default_merge_commit_message_with_description]).to eq('') + end + + context 'when "disable_widget_responses" is disabled' do + before do + stub_feature_flags(disable_widget_responses: false) + end + + it 'has default_merge_commit_message_with_description' do + expect(subject[:default_merge_commit_message_with_description]) + .to eq(resource.default_merge_commit_message(include_description: true)) + end + end end it { is_expected.to include(ff_only_enabled: false) }