From 0c0b6f438ee5ac12f9975fb1c3b1dc93f6447015 Mon Sep 17 00:00:00 2001 From: Matthew Dodds Date: Fri, 30 Sep 2016 11:00:03 -0400 Subject: Refactor url_helpers for system note service and remove duplication of logic in spec --- app/services/system_note_service.rb | 13 ++++++++----- spec/services/system_note_service_spec.rb | 18 +++++------------- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/app/services/system_note_service.rb b/app/services/system_note_service.rb index 8da1af67ee6..5ccaa5275b7 100644 --- a/app/services/system_note_service.rb +++ b/app/services/system_note_service.rb @@ -21,10 +21,10 @@ module SystemNoteService total_count = new_commits.length + existing_commits.length commits_text = "#{total_count} commit".pluralize(total_count) - body = "[Compare with previous version](#{diff_comparison_url(noteable, project, oldrev)})\n\n" - body << "Added #{commits_text}:\n\n" + body = "Added #{commits_text}:\n\n" body << existing_commit_summary(noteable, existing_commits, oldrev) body << new_commit_summary(new_commits).join("\n") + body << "\n\n[Compare with previous version](#{diff_comparison_url(noteable, project, oldrev)})" create_note(noteable: noteable, project: project, author: author, note: body) end @@ -255,8 +255,7 @@ module SystemNoteService # # "Started branch `201-issue-branch-button`" def new_issue_branch(issue, project, author, branch) - h = Gitlab::Routing.url_helpers - link = h.namespace_project_compare_url(project.namespace, project, from: project.default_branch, to: branch) + link = url_helpers.namespace_project_compare_url(project.namespace, project, from: project.default_branch, to: branch) body = "Started branch [`#{branch}`](#{link})" create_note(noteable: issue, project: project, author: author, note: body) @@ -468,10 +467,14 @@ module SystemNoteService Rack::Utils.escape_html(text) end + def url_helpers + @url_helpers ||= Gitlab::Routing.url_helpers + 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( + url_helpers.diffs_namespace_project_merge_request_url( project.namespace, project, merge_request.iid, diff --git a/spec/services/system_note_service_spec.rb b/spec/services/system_note_service_spec.rb index 16e345501d9..b16840a1238 100644 --- a/spec/services/system_note_service_spec.rb +++ b/spec/services/system_note_service_spec.rb @@ -41,34 +41,26 @@ describe SystemNoteService, services: true 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})" + it 'adds the comparison text' do + expect(note_lines[2]).to match "[Compare with previous version]" end end context 'without existing commits' do it 'adds a message header' do - expect(note_lines[1]).to eq "Added #{new_commits.size} commits:" + expect(note_lines[0]).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 + 2]).to eq "* #{commit.short_id} - #{commit.title}" + expect(note_lines[i + 1]).to eq "* #{commit.short_id} - #{commit.title}" end end end describe 'summary line for existing commits' do - let(:summary_line) { note_lines[2] } + let(:summary_line) { note_lines[1] } context 'with one existing commit' do let(:old_commits) { [noteable.commits.last] } -- cgit v1.2.1