Commit 70947fedda4f955f69d928ad0309b3f042056582

Authored by Dmitriy Zaporozhets
1 parent 61824973

inslude author & assignee to note notification recipients

app/services/notification_service.rb
... ... @@ -106,12 +106,14 @@ class NotificationService
106 106  
107 107 if note.commit_id
108 108 opts.merge!(commit_id: note.commit_id)
  109 + recipients = [note.commit_author]
109 110 else
110 111 opts.merge!(noteable_id: note.noteable_id)
  112 + recipients = [note.noteable.try(:author), note.noteable.try(:assignee)]
111 113 end
112 114  
113 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 118 # Merge project watchers
117 119 recipients = recipients.concat(project_watchers(note.project)).compact.uniq
... ...
spec/services/notification_service_spec.rb
... ... @@ -21,40 +21,71 @@ describe NotificationService do
21 21 end
22 22  
23 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 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 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 89 end
59 90 end
60 91 end
... ...