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 29 subject: subject("#{@merge_request.title} (!#{@merge_request.iid})"))
30 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 33 @merge_request = MergeRequest.find(merge_request_id)
34 34 @project = @merge_request.project
35 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 37 to: recipient(recipient_id),
38 38 subject: subject("#{@merge_request.title} (!#{@merge_request.iid})"))
39 39 end
... ...
app/services/notification_service.rb
... ... @@ -91,7 +91,7 @@ class NotificationService
91 91 recipients = recipients.concat(project_watchers(merge_request.target_project)).uniq
92 92  
93 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 95 end
96 96 end
97 97  
... ...
spec/mailers/notify_spec.rb
... ... @@ -229,6 +229,7 @@ describe Notify do
229 229 end
230 230  
231 231 context 'for merge requests' do
  232 + let(:merge_author) { create(:user) }
232 233 let(:merge_request) { create(:merge_request, author: current_user, assignee: assignee, source_project: project, target_project: project) }
233 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 289 it 'contains a link to the merge request' do
289 290 should have_body_text /#{project_merge_request_path project, merge_request}/
290 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 316 end
293 317 end
294 318 end
... ...
spec/services/notification_service_spec.rb
... ... @@ -233,15 +233,15 @@ describe NotificationService do
233 233 should_email(@u_watcher.id)
234 234 should_not_email(@u_participating.id)
235 235 should_not_email(@u_disabled.id)
236   - notification.merge_mr(merge_request)
  236 + notification.merge_mr(merge_request, @u_disabled)
237 237 end
238 238  
239 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 241 end
242 242  
243 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 245 end
246 246 end
247 247 end
... ...