Commit bbca0351f7028f52900ef0855615821b03a2c3f7

Authored by Dmitriy Zaporozhets
2 parents 55be026e 65f5496e

Merge pull request #6606 from kemenaran/fix-merge-notifications

Fix the merge notification email not being sent
app/mailers/emails/merge_requests.rb
@@ -29,11 +29,11 @@ module Emails @@ -29,11 +29,11 @@ module Emails
29 subject: subject("#{@merge_request.title} (!#{@merge_request.iid})")) 29 subject: subject("#{@merge_request.title} (!#{@merge_request.iid})"))
30 end 30 end
31 31
32 - def merged_merge_request_email(recipient_id, merge_request_id) 32 + def merged_merge_request_email(recipient_id, merge_request_id, updated_by_user_id)
33 @merge_request = MergeRequest.find(merge_request_id) 33 @merge_request = MergeRequest.find(merge_request_id)
34 @project = @merge_request.project 34 @project = @merge_request.project
35 @target_url = project_merge_request_url(@project, @merge_request) 35 @target_url = project_merge_request_url(@project, @merge_request)
36 - mail(from: sender(@merge_request.author_id_of_changes), 36 + mail(from: sender(updated_by_user_id),
37 to: recipient(recipient_id), 37 to: recipient(recipient_id),
38 subject: subject("#{@merge_request.title} (!#{@merge_request.iid})")) 38 subject: subject("#{@merge_request.title} (!#{@merge_request.iid})"))
39 end 39 end
app/services/notification_service.rb
@@ -91,7 +91,7 @@ class NotificationService @@ -91,7 +91,7 @@ class NotificationService
91 recipients = recipients.concat(project_watchers(merge_request.target_project)).uniq 91 recipients = recipients.concat(project_watchers(merge_request.target_project)).uniq
92 92
93 recipients.each do |recipient| 93 recipients.each do |recipient|
94 - mailer.merged_merge_request_email(recipient.id, merge_request.id) 94 + mailer.merged_merge_request_email(recipient.id, merge_request.id, merge_request.author_id_of_changes)
95 end 95 end
96 end 96 end
97 97
spec/mailers/notify_spec.rb
@@ -229,6 +229,7 @@ describe Notify do @@ -229,6 +229,7 @@ describe Notify do
229 end 229 end
230 230
231 context 'for merge requests' do 231 context 'for merge requests' do
  232 + let(:merge_author) { create(:user) }
232 let(:merge_request) { create(:merge_request, author: current_user, assignee: assignee, source_project: project, target_project: project) } 233 let(:merge_request) { create(:merge_request, author: current_user, assignee: assignee, source_project: project, target_project: project) }
233 let(:merge_request_with_description) { create(:merge_request, author: current_user, assignee: assignee, source_project: project, target_project: project, description: Faker::Lorem.sentence) } 234 let(:merge_request_with_description) { create(:merge_request, author: current_user, assignee: assignee, source_project: project, target_project: project, description: Faker::Lorem.sentence) }
234 235
@@ -288,7 +289,30 @@ describe Notify do @@ -288,7 +289,30 @@ describe Notify do
288 it 'contains a link to the merge request' do 289 it 'contains a link to the merge request' do
289 should have_body_text /#{project_merge_request_path project, merge_request}/ 290 should have_body_text /#{project_merge_request_path project, merge_request}/
290 end 291 end
  292 + end
  293 +
  294 + describe 'that are merged' do
  295 + subject { Notify.merged_merge_request_email(recipient.id, merge_request.id, merge_author.id) }
  296 +
  297 + it_behaves_like 'a multiple recipients email'
  298 +
  299 + it 'is sent as the merge author' do
  300 + sender = subject.header[:from].addrs[0]
  301 + sender.display_name.should eq(merge_author.name)
  302 + sender.address.should eq(gitlab_sender)
  303 + end
  304 +
  305 + it 'has the correct subject' do
  306 + should have_subject /#{merge_request.title} \(!#{merge_request.iid}\)/
  307 + end
291 308
  309 + it 'contains the new status' do
  310 + should have_body_text /merged/i
  311 + end
  312 +
  313 + it 'contains a link to the merge request' do
  314 + should have_body_text /#{project_merge_request_path project, merge_request}/
  315 + end
292 end 316 end
293 end 317 end
294 end 318 end
spec/services/notification_service_spec.rb
@@ -233,15 +233,15 @@ describe NotificationService do @@ -233,15 +233,15 @@ describe NotificationService do
233 should_email(@u_watcher.id) 233 should_email(@u_watcher.id)
234 should_not_email(@u_participating.id) 234 should_not_email(@u_participating.id)
235 should_not_email(@u_disabled.id) 235 should_not_email(@u_disabled.id)
236 - notification.merge_mr(merge_request) 236 + notification.merge_mr(merge_request, @u_disabled)
237 end 237 end
238 238
239 def should_email(user_id) 239 def should_email(user_id)
240 - Notify.should_receive(:merged_merge_request_email).with(user_id, merge_request.id) 240 + Notify.should_receive(:merged_merge_request_email).with(user_id, merge_request.id, @u_disabled.id)
241 end 241 end
242 242
243 def should_not_email(user_id) 243 def should_not_email(user_id)
244 - Notify.should_not_receive(:merged_merge_request_email).with(user_id, merge_request.id) 244 + Notify.should_not_receive(:merged_merge_request_email).with(user_id, merge_request.id, @u_disabled.id)
245 end 245 end
246 end 246 end
247 end 247 end