diff --git a/app/controllers/projects/merge_requests/application_controller.rb b/app/controllers/projects/merge_requests/application_controller.rb index a448cc562f25cfaeb1cad684c87638ac4ea0060c..ae93f61018a193a91dac3894317ffbcef7421c77 100644 --- a/app/controllers/projects/merge_requests/application_controller.rb +++ b/app/controllers/projects/merge_requests/application_controller.rb @@ -85,6 +85,18 @@ def close_merge_request_if_no_source_project @merge_request.close end + + # rubocop: disable CodeReuse/ActiveRecord + def commit + commit_id = params[:commit_id].presence + return unless commit_id + + return unless @merge_request.all_commits.exists?(sha: commit_id) || + @merge_request.recent_context_commits.map(&:id).include?(commit_id) + + @commit ||= @project.commit(commit_id) + end + # rubocop: enable CodeReuse/ActiveRecord end Projects::MergeRequests::ApplicationController.prepend_mod_with('Projects::MergeRequests::ApplicationController') diff --git a/app/controllers/projects/merge_requests/diffs_controller.rb b/app/controllers/projects/merge_requests/diffs_controller.rb index 8e6a8ee19a7dd7557c00b39f15e37c4fbe93112d..cce2ad3d823a4b5712450d2e8faa85d2a168f6ad 100644 --- a/app/controllers/projects/merge_requests/diffs_controller.rb +++ b/app/controllers/projects/merge_requests/diffs_controller.rb @@ -134,16 +134,6 @@ def define_diff_vars render_404 unless @compare end - # rubocop: disable CodeReuse/ActiveRecord - def commit - return unless commit_id = params[:commit_id].presence - return unless @merge_request.all_commits.exists?(sha: commit_id) || - @merge_request.recent_context_commits.map(&:id).include?(commit_id) - - @commit ||= @project.commit(commit_id) - end - # rubocop: enable CodeReuse/ActiveRecord - # rubocop: disable CodeReuse/ActiveRecord # # Deprecated: https://gitlab.com/gitlab-org/gitlab/issues/37735 diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb index 624248b6c61ccdca4b8642d7e6e28eddc6fe3a0f..4e366758acd296410dd22a9d6f566962195395ed 100644 --- a/app/controllers/projects/merge_requests_controller.rb +++ b/app/controllers/projects/merge_requests_controller.rb @@ -477,6 +477,7 @@ def render_html_page end def get_diffs_count + return @commit.raw_diffs.size if commit return @merge_request.context_commits_diff.raw_diffs.size if show_only_context_commits? return @merge_request.merge_request_diffs.find_by_id(params[:diff_id])&.size if params[:diff_id] return @merge_request.merge_head_diff.size if @merge_request.diffable_merge_ref? && params[:start_sha].blank? diff --git a/spec/features/merge_request/user_views_diffs_commit_spec.rb b/spec/features/merge_request/user_views_diffs_commit_spec.rb index ba1b41982c9246bb9cd5023d1a21db678a1611eb..b36fdeb39b5ee46625ab14ead6dcbfb83cd5a015 100644 --- a/spec/features/merge_request/user_views_diffs_commit_spec.rb +++ b/spec/features/merge_request/user_views_diffs_commit_spec.rb @@ -8,12 +8,28 @@ end let(:project) { create(:project, :public, :repository) } + let(:commit_id) { merge_request.diff_head_sha } before do - visit(diffs_project_merge_request_path(project, merge_request, commit_id: merge_request.diff_head_sha)) + visit(diffs_project_merge_request_path(project, merge_request, commit_id: commit_id)) end it 'shows full commit description by default' do - expect(page).to have_selector('.commit-row-description', visible: true) + within_testid('commit-content') do + expect(page).to have_content("Add submodule from gitlab.com") + end + end + + it 'shows correct commit metadata' do + expect(page).to have_content("Viewing commit #{commit_id[..7]}") + within_testid('diffs-tab') do + expect(page).to have_content('Changes 2') + end + page.within('#diffs') do + expect(page).to have_content('2 files') + end + within_testid('file-tree-container') do + expect(page).to have_content('Files 2') + end end end