Commit c4c877e4330feb4684284a067fd0acf4a7a1dfaa
Exists in
spb-stable
and in
2 other branches
Merge branch 'milestone-change-note' into 'master'
Create a note when issue milestone was changed Part of #1207
Showing
7 changed files
with
34 additions
and
2 deletions
Show diff stats
app/models/note.rb
... | ... | @@ -90,6 +90,22 @@ class Note < ActiveRecord::Base |
90 | 90 | create(note_options, without_protection: true) |
91 | 91 | end |
92 | 92 | |
93 | + def create_milestone_change_note(noteable, project, author, milestone) | |
94 | + body = if milestone.nil? | |
95 | + '_Milestone removed_' | |
96 | + else | |
97 | + "_Milestone changed to #{milestone.title}_" | |
98 | + end | |
99 | + | |
100 | + create({ | |
101 | + noteable: noteable, | |
102 | + project: project, | |
103 | + author: author, | |
104 | + note: body, | |
105 | + system: true | |
106 | + }, without_protection: true) | |
107 | + end | |
108 | + | |
93 | 109 | def create_assignee_change_note(noteable, project, author, assignee) |
94 | 110 | body = assignee.nil? ? '_Assignee removed_' : "_Reassigned to @#{assignee.username}_" |
95 | 111 | ... | ... |
app/services/issues/base_service.rb
... | ... | @@ -10,5 +10,9 @@ module Issues |
10 | 10 | def execute_hooks(issue) |
11 | 11 | issue.project.execute_hooks(issue.to_hook_data, :issue_hooks) |
12 | 12 | end |
13 | + | |
14 | + def create_milestone_note(issue) | |
15 | + Note.create_milestone_change_note(issue, issue.project, current_user, issue.milestone) | |
16 | + end | |
13 | 17 | end |
14 | 18 | end | ... | ... |
app/services/issues/update_service.rb
... | ... | @@ -13,6 +13,10 @@ module Issues |
13 | 13 | if params.present? && issue.update_attributes(params) |
14 | 14 | issue.reset_events_cache |
15 | 15 | |
16 | + if issue.previous_changes.include?('milestone_id') | |
17 | + create_milestone_note(issue) | |
18 | + end | |
19 | + | |
16 | 20 | if issue.previous_changes.include?('assignee_id') |
17 | 21 | notification_service.reassigned_issue(issue, current_user) |
18 | 22 | create_assignee_note(issue) | ... | ... |
app/services/merge_requests/base_service.rb
... | ... | @@ -16,5 +16,9 @@ module MergeRequests |
16 | 16 | merge_request.project.execute_hooks(merge_request.to_hook_data, :merge_request_hooks) |
17 | 17 | end |
18 | 18 | end |
19 | + | |
20 | + def create_milestone_note(merge_request) | |
21 | + Note.create_milestone_change_note(merge_request, merge_request.project, current_user, merge_request.milestone) | |
22 | + end | |
19 | 23 | end |
20 | 24 | end | ... | ... |
app/services/merge_requests/update_service.rb
... | ... | @@ -22,6 +22,10 @@ module MergeRequests |
22 | 22 | if params.present? && merge_request.update_attributes(params) |
23 | 23 | merge_request.reset_events_cache |
24 | 24 | |
25 | + if merge_request.previous_changes.include?('milestone_id') | |
26 | + create_milestone_note(merge_request) | |
27 | + end | |
28 | + | |
25 | 29 | if merge_request.previous_changes.include?('assignee_id') |
26 | 30 | notification_service.reassigned_merge_request(merge_request, current_user) |
27 | 31 | create_assignee_note(merge_request) | ... | ... |
app/services/notification_service.rb
... | ... | @@ -254,7 +254,7 @@ class NotificationService |
254 | 254 | # Remove users with disabled notifications from array |
255 | 255 | # Also remove duplications and nil recipients |
256 | 256 | def reject_muted_users(users, project = nil) |
257 | - users = users.compact.uniq | |
257 | + users = users.to_a.compact.uniq | |
258 | 258 | |
259 | 259 | users.reject do |user| |
260 | 260 | next user.notification.disabled? unless project | ... | ... |
spec/features/issues_spec.rb
... | ... | @@ -248,7 +248,7 @@ describe "Issues", feature: true do |
248 | 248 | find('.edit-issue.inline-update').select(milestone.title, from: 'issue_milestone_id') |
249 | 249 | click_button 'Update Issue' |
250 | 250 | |
251 | - page.should have_content "Milestone" | |
251 | + page.should have_content "Milestone changed to #{milestone.title}" | |
252 | 252 | page.has_select?('issue_assignee_id', :selected => milestone.title) |
253 | 253 | end |
254 | 254 | end | ... | ... |