Commit 38ed96e9 authored by Heidi Hoopes's avatar Heidi Hoopes Committed by Sean McGivern

Add diff hunks to notification emails on MR

Added diff hunks to notification emails of messages on merge requests. This
provides code context to the note. Uses existing template for formatting
a diff for email (from repository push notifications).
parent 838c1aad
......@@ -797,6 +797,7 @@ entry.
## 8.11.0 (2016-08-22)
- Use test coverage value from the latest successful pipeline in badge. !5862
- Add git diff context to notifications of new notes on merge requests !5855 (hoopes)
- Add test coverage report badge. !5708
- Remove the http_parser.rb dependency by removing the tinder gem. !5758 (tbalthazar)
- Add Koding (online IDE) integration
......
= content_for :head do
= stylesheet_link_tag 'mailers/highlighted_diff_email'
- if @note.diff_note? && @note.diff_file
%p.details
New comment on diff for
= link_to @note.diff_file.file_path, @target_url
\:
.diff-content.code.js-syntax-highlight
%table
- Discussion.new([@note]).truncated_diff_lines.each do |line|
= render "projects/diffs/line", line: line, diff_file: @note.diff_file, plain: true
= render 'note_message'
= content_for :head do
= stylesheet_link_tag 'mailers/repository_push_email'
= stylesheet_link_tag 'mailers/highlighted_diff_email'
%h3
#{@message.author_name} #{@message.action_name} #{@message.ref_type} #{@message.ref_name}
......
......@@ -580,8 +580,10 @@ describe Notify do
let(:note_author) { create(:user, name: 'author_name') }
let(:note) { create(:note, project: project, author: note_author) }
before :each do
allow(Note).to receive(:find).with(note.id).and_return(note)
before do |example|
unless example.metadata[:skip_before]
allow(Note).to receive(:find).with(note.id).and_return(note)
end
end
shared_examples 'a note email' do
......@@ -663,6 +665,19 @@ describe Notify do
end
end
describe "on a merge request with diffs", :skip_before do
let(:merge_request) { create(:merge_request_with_diffs) }
let(:note_with_diff) {create(:diff_note_on_merge_request)}
before(:each) { allow(note_with_diff).to receive(:noteable).and_return(merge_request) }
subject { Notify.note_merge_request_email(recipient.id, note_with_diff.id) }
it 'includes diffs with character-level highlighting' do
expected_line_text = Discussion.new([note_with_diff]).truncated_diff_lines.first.text
is_expected.to have_body_text expected_line_text
end
end
describe 'on an issue' do
let(:issue) { create(:issue, project: project) }
let(:note_on_issue_path) { namespace_project_issue_path(project.namespace, project, issue, anchor: "note_#{note.id}") }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment