diff options
author | Matthew Dodds <matthewrusselldodds@gmail.com> | 2016-09-29 21:51:33 -0400 |
---|---|---|
committer | Matthew Dodds <matthewrusselldodds@gmail.com> | 2016-09-29 21:51:33 -0400 |
commit | ec82cecf3c54cb2cd1ab7b72f77e787be1bf1264 (patch) | |
tree | 93dfe504596787d20faea4888b6e933128ccd917 | |
parent | ce0591df704028c467dbb34c1521347c3b8c7cda (diff) | |
download | gitlab-ce-ec82cecf3c54cb2cd1ab7b72f77e787be1bf1264.tar.gz |
Add link to comparison from system note, update changelog
-rw-r--r-- | CHANGELOG | 1 | ||||
-rw-r--r-- | app/services/system_note_service.rb | 15 | ||||
-rw-r--r-- | spec/services/system_note_service_spec.rb | 20 |
3 files changed, 32 insertions, 4 deletions
diff --git a/CHANGELOG b/CHANGELOG index a1add261a89..b74c7a05908 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ Please view this file on the master branch, on stable branches it's out of date. v 8.13.0 (unreleased) + - Add link from system note to compare with previous version - Use gitlab-shell v3.6.2 (GIT TRACE logging) - AbstractReferenceFilter caches project_refs on RequestStore when active - Speed-up group milestones show page diff --git a/app/services/system_note_service.rb b/app/services/system_note_service.rb index 0c8446e7c3d..8da1af67ee6 100644 --- a/app/services/system_note_service.rb +++ b/app/services/system_note_service.rb @@ -21,7 +21,8 @@ module SystemNoteService total_count = new_commits.length + existing_commits.length commits_text = "#{total_count} commit".pluralize(total_count) - body = "Added #{commits_text}:\n\n" + body = "[Compare with previous version](#{diff_comparison_url(noteable, project, oldrev)})\n\n" + body << "Added #{commits_text}:\n\n" body << existing_commit_summary(noteable, existing_commits, oldrev) body << new_commit_summary(new_commits).join("\n") @@ -466,4 +467,16 @@ module SystemNoteService def escape_html(text) Rack::Utils.escape_html(text) end + + def diff_comparison_url(merge_request, project, oldrev) + diff_id = merge_request.merge_request_diff.id + + Gitlab::Routing.url_helpers.diffs_namespace_project_merge_request_url( + project.namespace, + project, + merge_request.iid, + diff_id: diff_id, + start_sha: oldrev + ) + end end diff --git a/spec/services/system_note_service_spec.rb b/spec/services/system_note_service_spec.rb index 3d854a959f3..16e345501d9 100644 --- a/spec/services/system_note_service_spec.rb +++ b/spec/services/system_note_service_spec.rb @@ -40,21 +40,35 @@ describe SystemNoteService, services: true do describe 'note body' do let(:note_lines) { subject.note.split("\n").reject(&:blank?) } + describe 'comparison diff link line' do + it 'adds the comparison link' do + link = Gitlab::Routing.url_helpers.diffs_namespace_project_merge_request_url( + project.namespace, + project, + noteable.iid, + diff_id: noteable.merge_request_diff.id, + start_sha: oldrev + ) + + expect(note_lines[0]).to eq "[Compare with previous version](#{link})" + end + end + context 'without existing commits' do it 'adds a message header' do - expect(note_lines[0]).to eq "Added #{new_commits.size} commits:" + expect(note_lines[1]).to eq "Added #{new_commits.size} commits:" end it 'adds a message line for each commit' do new_commits.each_with_index do |commit, i| # Skip the header - expect(note_lines[i + 1]).to eq "* #{commit.short_id} - #{commit.title}" + expect(note_lines[i + 2]).to eq "* #{commit.short_id} - #{commit.title}" end end end describe 'summary line for existing commits' do - let(:summary_line) { note_lines[1] } + let(:summary_line) { note_lines[2] } context 'with one existing commit' do let(:old_commits) { [noteable.commits.last] } |