Commit 30a4f4c9 authored by Rémy Coutable's avatar Rémy Coutable

This will ensure previous assignee gets an email even if his notif level is "on mention"

parent 55ae5394
...@@ -376,10 +376,10 @@ class NotificationService ...@@ -376,10 +376,10 @@ class NotificationService
end end
def reassign_resource_email(target, project, current_user, method) def reassign_resource_email(target, project, current_user, method)
previous_assignee_id = previous_record(target, "assignee_id") previous_assignee_id = previous_record(target, 'assignee_id')
previous_assignee = User.find_by(id: previous_assignee_id) if previous_assignee_id previous_assignee = User.find_by(id: previous_assignee_id) if previous_assignee_id
recipients = build_recipients(target, project, current_user, action: :reassign, extra_recipients: [previous_assignee]) recipients = build_recipients(target, project, current_user, action: :reassign, previous_assignee: previous_assignee)
recipients.each do |recipient| recipients.each do |recipient|
mailer.send( mailer.send(
...@@ -400,11 +400,9 @@ class NotificationService ...@@ -400,11 +400,9 @@ class NotificationService
end end
end end
def build_recipients(target, project, current_user, action: nil, extra_recipients: nil) def build_recipients(target, project, current_user, action: nil, previous_assignee: nil)
recipients = target.participants(current_user) recipients = target.participants(current_user)
recipients = recipients.concat(extra_recipients).compact.uniq if extra_recipients
recipients = add_project_watchers(recipients, project) recipients = add_project_watchers(recipients, project)
recipients = reject_mention_users(recipients, project) recipients = reject_mention_users(recipients, project)
...@@ -412,6 +410,7 @@ class NotificationService ...@@ -412,6 +410,7 @@ class NotificationService
# new assignee to the list of recipients after we rejected users with # new assignee to the list of recipients after we rejected users with
# the "on mention" notification level # the "on mention" notification level
if action == :reassign if action == :reassign
recipients << previous_assignee if previous_assignee
recipients << target.assignee recipients << target.assignee
end end
......
...@@ -227,6 +227,46 @@ describe NotificationService, services: true do ...@@ -227,6 +227,46 @@ describe NotificationService, services: true do
end end
describe :reassigned_issue do describe :reassigned_issue do
it 'emails new assignee' do
notification.reassigned_issue(issue, @u_disabled)
should_email(issue.assignee)
should_email(@u_watcher)
should_email(@u_participant_mentioned)
should_email(@subscriber)
should_not_email(@unsubscriber)
should_not_email(@u_participating)
should_not_email(@u_disabled)
end
it 'emails previous assignee even if he has the "on mention" notif level' do
issue.update_attribute(:assignee, @u_mentioned)
issue.update_attributes(assignee: @u_watcher)
notification.reassigned_issue(issue, @u_disabled)
should_email(@u_mentioned)
should_email(@u_watcher)
should_email(@u_participant_mentioned)
should_email(@subscriber)
should_not_email(@unsubscriber)
should_not_email(@u_participating)
should_not_email(@u_disabled)
end
it 'emails new assignee even if he has the "on mention" notif level' do
issue.update_attributes(assignee: @u_mentioned)
notification.reassigned_issue(issue, @u_disabled)
expect(issue.assignee).to be @u_mentioned
should_email(issue.assignee)
should_email(@u_watcher)
should_email(@u_participant_mentioned)
should_email(@subscriber)
should_not_email(@unsubscriber)
should_not_email(@u_participating)
should_not_email(@u_disabled)
end
it 'emails new assignee' do it 'emails new assignee' do
issue.update_attribute(:assignee, @u_mentioned) issue.update_attribute(:assignee, @u_mentioned)
notification.reassigned_issue(issue, @u_disabled) notification.reassigned_issue(issue, @u_disabled)
......
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