diff options
| -rw-r--r-- | CHANGELOG | 1 | ||||
| -rw-r--r-- | app/services/notification_service.rb | 12 | ||||
| -rw-r--r-- | spec/services/issues/update_service_spec.rb | 12 | ||||
| -rw-r--r-- | spec/services/merge_requests/update_service_spec.rb | 11 | 
4 files changed, 24 insertions, 12 deletions
diff --git a/CHANGELOG b/CHANGELOG index cc9fcf1992b..8e31d2a0432 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -34,6 +34,7 @@ v 8.2.0    - Add "added", "modified" and "removed" properties to commit object in webhook    - Rename "Back to" links to "Go to" because its not always a case it point to place user come from    - Allow groups to appear in the search results if the group owner allows it +  - Add email notification to former assignee upon unassignment (Adam Lieskovský)    - New design for project graphs page    - Remove deprecated dumped yaml file generated from previous job definitions    - Fix incoming email config defaults diff --git a/app/services/notification_service.rb b/app/services/notification_service.rb index 4b871f072d4..bbfe755f44a 100644 --- a/app/services/notification_service.rb +++ b/app/services/notification_service.rb @@ -351,11 +351,13 @@ class NotificationService    end    def reassign_resource_email(target, project, current_user, method) -    assignee_id_was = previous_record(target, "assignee_id") -    recipients = build_recipients(target, project, current_user) +    previous_assignee_id = previous_record(target, "assignee_id") +    previous_assignee = User.find_by(id: previous_assignee_id) if previous_assignee_id + +    recipients = build_recipients(target, project, current_user, [previous_assignee])      recipients.each do |recipient| -      mailer.send(method, recipient.id, target.id, assignee_id_was, current_user.id) +      mailer.send(method, recipient.id, target.id, previous_assignee_id, current_user.id)      end    end @@ -367,9 +369,11 @@ class NotificationService      end    end -  def build_recipients(target, project, current_user) +  def build_recipients(target, project, current_user, extra_recipients = nil)      recipients = target.participants(current_user) +    recipients = recipients.concat(extra_recipients).compact.uniq if extra_recipients +      recipients = add_project_watchers(recipients, project)      recipients = reject_mention_users(recipients, project)      recipients = reject_muted_users(recipients, project) diff --git a/spec/services/issues/update_service_spec.rb b/spec/services/issues/update_service_spec.rb index a91be3b4472..f55527ee9a3 100644 --- a/spec/services/issues/update_service_spec.rb +++ b/spec/services/issues/update_service_spec.rb @@ -3,13 +3,15 @@ require 'spec_helper'  describe Issues::UpdateService do    let(:user) { create(:user) }    let(:user2) { create(:user) } -  let(:issue) { create(:issue, title: 'Old title') } +  let(:user3) { create(:user) } +  let(:issue) { create(:issue, title: 'Old title', assignee_id: user3.id) }    let(:label) { create(:label) }    let(:project) { issue.project }    before do      project.team << [user, :master]      project.team << [user2, :developer] +    project.team << [user3, :developer]    end    describe 'execute' do @@ -34,9 +36,11 @@ describe Issues::UpdateService do        it { expect(@issue.labels.count).to eq(1) }        it { expect(@issue.labels.first.title).to eq('Bug') } -      it 'should send email to user2 about assign of new issue' do -        email = ActionMailer::Base.deliveries.last -        expect(email.to.first).to eq(user2.email) +      it 'should send email to user2 about assign of new issue and email to user3 about issue unassignment' do +        deliveries = ActionMailer::Base.deliveries +        email = deliveries.last +        recipients = deliveries.last(2).map(&:to).flatten +        expect(recipients).to include(user2.email, user3.email)          expect(email.subject).to include(issue.title)        end diff --git a/spec/services/merge_requests/update_service_spec.rb b/spec/services/merge_requests/update_service_spec.rb index c75173c1452..2ed51d223b7 100644 --- a/spec/services/merge_requests/update_service_spec.rb +++ b/spec/services/merge_requests/update_service_spec.rb @@ -3,7 +3,8 @@ require 'spec_helper'  describe MergeRequests::UpdateService do    let(:user) { create(:user) }    let(:user2) { create(:user) } -  let(:merge_request) { create(:merge_request, :simple, title: 'Old title') } +  let(:user3) { create(:user) } +  let(:merge_request) { create(:merge_request, :simple, title: 'Old title', assignee_id: user3.id) }    let(:project) { merge_request.project }    let(:label) { create(:label) } @@ -47,9 +48,11 @@ describe MergeRequests::UpdateService do                                 with(@merge_request, 'update')        end -      it 'should send email to user2 about assign of new merge_request' do -        email = ActionMailer::Base.deliveries.last -        expect(email.to.first).to eq(user2.email) +      it 'should send email to user2 about assign of new merge request and email to user3 about merge request unassignment' do +        deliveries = ActionMailer::Base.deliveries +        email = deliveries.last +        recipients = deliveries.last(2).map(&:to).flatten +        expect(recipients).to include(user2.email, user3.email)          expect(email.subject).to include(merge_request.title)        end  | 
