Commit bbca0351f7028f52900ef0855615821b03a2c3f7
Exists in
spb-stable
and in
3 other branches
Merge pull request #6606 from kemenaran/fix-merge-notifications
Fix the merge notification email not being sent
Showing
4 changed files
with
30 additions
and
6 deletions
Show diff stats
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 |