Commit 70947fedda4f955f69d928ad0309b3f042056582
1 parent
61824973
Exists in
master
and in
4 other branches
inslude author & assignee to note notification recipients
Showing
2 changed files
with
61 additions
and
28 deletions
Show diff stats
app/services/notification_service.rb
| @@ -106,12 +106,14 @@ class NotificationService | @@ -106,12 +106,14 @@ class NotificationService | ||
| 106 | 106 | ||
| 107 | if note.commit_id | 107 | if note.commit_id |
| 108 | opts.merge!(commit_id: note.commit_id) | 108 | opts.merge!(commit_id: note.commit_id) |
| 109 | + recipients = [note.commit_author] | ||
| 109 | else | 110 | else |
| 110 | opts.merge!(noteable_id: note.noteable_id) | 111 | opts.merge!(noteable_id: note.noteable_id) |
| 112 | + recipients = [note.noteable.try(:author), note.noteable.try(:assignee)] | ||
| 111 | end | 113 | end |
| 112 | 114 | ||
| 113 | # Get users who left comment in thread | 115 | # Get users who left comment in thread |
| 114 | - recipients = User.where(id: Note.where(opts).pluck(:author_id)) | 116 | + recipients = recipients.concat(User.where(id: Note.where(opts).pluck(:author_id))) |
| 115 | 117 | ||
| 116 | # Merge project watchers | 118 | # Merge project watchers |
| 117 | recipients = recipients.concat(project_watchers(note.project)).compact.uniq | 119 | recipients = recipients.concat(project_watchers(note.project)).compact.uniq |
spec/services/notification_service_spec.rb
| @@ -21,40 +21,71 @@ describe NotificationService do | @@ -21,40 +21,71 @@ describe NotificationService do | ||
| 21 | end | 21 | end |
| 22 | 22 | ||
| 23 | describe 'Notes' do | 23 | describe 'Notes' do |
| 24 | - let(:note) { create :note_on_commit } | 24 | + context 'issue note' do |
| 25 | + let(:issue) { create(:issue, assignee: create(:user)) } | ||
| 26 | + let(:note) { create(:note_on_issue, noteable: issue, project_id: issue.project_id) } | ||
| 25 | 27 | ||
| 26 | - before do | ||
| 27 | - build_team(note.project) | ||
| 28 | - end | ||
| 29 | - | ||
| 30 | - describe :new_note do | ||
| 31 | - it do | ||
| 32 | - should_email(@u_watcher.id) | ||
| 33 | - should_not_email(note.author_id) | ||
| 34 | - should_not_email(@u_participating.id) | ||
| 35 | - should_not_email(@u_disabled.id) | ||
| 36 | - notification.new_note(note) | 28 | + before do |
| 29 | + build_team(note.project) | ||
| 37 | end | 30 | end |
| 38 | 31 | ||
| 39 | - it do | ||
| 40 | - create(:note_on_commit, | ||
| 41 | - author: @u_participating, | ||
| 42 | - project_id: note.project_id, | ||
| 43 | - commit_id: note.commit_id) | 32 | + describe :new_note do |
| 33 | + it do | ||
| 34 | + should_email(@u_watcher.id) | ||
| 35 | + should_email(note.noteable.author_id) | ||
| 36 | + should_email(note.noteable.assignee_id) | ||
| 37 | + should_not_email(note.author_id) | ||
| 38 | + should_not_email(@u_participating.id) | ||
| 39 | + should_not_email(@u_disabled.id) | ||
| 40 | + notification.new_note(note) | ||
| 41 | + end | ||
| 44 | 42 | ||
| 45 | - should_email(@u_watcher.id) | ||
| 46 | - should_email(@u_participating.id) | ||
| 47 | - should_not_email(note.author_id) | ||
| 48 | - should_not_email(@u_disabled.id) | ||
| 49 | - notification.new_note(note) | ||
| 50 | - end | 43 | + def should_email(user_id) |
| 44 | + Notify.should_receive(:note_issue_email).with(user_id, note.id) | ||
| 45 | + end | ||
| 51 | 46 | ||
| 52 | - def should_email(user_id) | ||
| 53 | - Notify.should_receive(:note_commit_email).with(user_id, note.id) | 47 | + def should_not_email(user_id) |
| 48 | + Notify.should_not_receive(:note_issue_email).with(user_id, note.id) | ||
| 49 | + end | ||
| 54 | end | 50 | end |
| 51 | + end | ||
| 55 | 52 | ||
| 56 | - def should_not_email(user_id) | ||
| 57 | - Notify.should_not_receive(:note_commit_email).with(user_id, note.id) | 53 | + context 'commit note' do |
| 54 | + let(:note) { create :note_on_commit } | ||
| 55 | + | ||
| 56 | + before do | ||
| 57 | + build_team(note.project) | ||
| 58 | + end | ||
| 59 | + | ||
| 60 | + describe :new_note do | ||
| 61 | + it do | ||
| 62 | + should_email(@u_watcher.id) | ||
| 63 | + should_not_email(note.author_id) | ||
| 64 | + should_not_email(@u_participating.id) | ||
| 65 | + should_not_email(@u_disabled.id) | ||
| 66 | + notification.new_note(note) | ||
| 67 | + end | ||
| 68 | + | ||
| 69 | + it do | ||
| 70 | + create(:note_on_commit, | ||
| 71 | + author: @u_participating, | ||
| 72 | + project_id: note.project_id, | ||
| 73 | + commit_id: note.commit_id) | ||
| 74 | + | ||
| 75 | + should_email(@u_watcher.id) | ||
| 76 | + should_email(@u_participating.id) | ||
| 77 | + should_not_email(note.author_id) | ||
| 78 | + should_not_email(@u_disabled.id) | ||
| 79 | + notification.new_note(note) | ||
| 80 | + end | ||
| 81 | + | ||
| 82 | + def should_email(user_id) | ||
| 83 | + Notify.should_receive(:note_commit_email).with(user_id, note.id) | ||
| 84 | + end | ||
| 85 | + | ||
| 86 | + def should_not_email(user_id) | ||
| 87 | + Notify.should_not_receive(:note_commit_email).with(user_id, note.id) | ||
| 88 | + end | ||
| 58 | end | 89 | end |
| 59 | end | 90 | end |
| 60 | end | 91 | end |