Merge pull request #5933 from dblessing/feature/assignee_changes_in_timeline
Add note for assignee changes
This commit is contained in:
commit
0253c949a2
3 changed files with 48 additions and 0 deletions
|
@ -82,6 +82,18 @@ class Note < ActiveRecord::Base
|
||||||
}, without_protection: true)
|
}, without_protection: true)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def create_assignee_change_note(noteable, project, author, assignee)
|
||||||
|
body = assignee.nil? ? '_Assignee removed_' : "_Reassigned to @#{assignee.username}_"
|
||||||
|
|
||||||
|
create({
|
||||||
|
noteable: noteable,
|
||||||
|
project: project,
|
||||||
|
author: author,
|
||||||
|
note: body,
|
||||||
|
system: true
|
||||||
|
}, without_protection: true)
|
||||||
|
end
|
||||||
|
|
||||||
def discussions_from_notes(notes)
|
def discussions_from_notes(notes)
|
||||||
discussion_ids = []
|
discussion_ids = []
|
||||||
discussions = []
|
discussions = []
|
||||||
|
|
|
@ -19,6 +19,7 @@ class IssueObserver < BaseObserver
|
||||||
def after_update(issue)
|
def after_update(issue)
|
||||||
if issue.is_being_reassigned?
|
if issue.is_being_reassigned?
|
||||||
notification.reassigned_issue(issue, current_user)
|
notification.reassigned_issue(issue, current_user)
|
||||||
|
create_assignee_note(issue)
|
||||||
end
|
end
|
||||||
|
|
||||||
issue.notice_added_references(issue.project, current_user)
|
issue.notice_added_references(issue.project, current_user)
|
||||||
|
@ -32,6 +33,10 @@ class IssueObserver < BaseObserver
|
||||||
Note.create_status_change_note(issue, issue.project, current_user, issue.state, current_commit)
|
Note.create_status_change_note(issue, issue.project, current_user, issue.state, current_commit)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def create_assignee_note(issue)
|
||||||
|
Note.create_assignee_change_note(issue, issue.project, current_user, issue.assignee)
|
||||||
|
end
|
||||||
|
|
||||||
def execute_hooks(issue)
|
def execute_hooks(issue)
|
||||||
issue.project.execute_hooks(issue.to_hook_data, :issue_hooks)
|
issue.project.execute_hooks(issue.to_hook_data, :issue_hooks)
|
||||||
end
|
end
|
||||||
|
|
|
@ -180,6 +180,31 @@ describe Note do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '#create_assignee_change_note' do
|
||||||
|
let(:project) { create(:project) }
|
||||||
|
let(:thing) { create(:issue, project: project) }
|
||||||
|
let(:author) { create(:user) }
|
||||||
|
let(:assignee) { create(:user) }
|
||||||
|
|
||||||
|
subject { Note.create_assignee_change_note(thing, project, author, assignee) }
|
||||||
|
|
||||||
|
context 'creates and saves a Note' do
|
||||||
|
it { should be_a Note }
|
||||||
|
its(:id) { should_not be_nil }
|
||||||
|
end
|
||||||
|
|
||||||
|
its(:noteable) { should == thing }
|
||||||
|
its(:project) { should == thing.project }
|
||||||
|
its(:author) { should == author }
|
||||||
|
its(:note) { should =~ /Reassigned to @#{assignee.username}/ }
|
||||||
|
|
||||||
|
context 'assignee is removed' do
|
||||||
|
let(:assignee) { nil }
|
||||||
|
|
||||||
|
its(:note) { should =~ /Assignee removed/ }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe '#create_cross_reference_note' do
|
describe '#create_cross_reference_note' do
|
||||||
let(:project) { create(:project_with_code) }
|
let(:project) { create(:project_with_code) }
|
||||||
let(:author) { create(:user) }
|
let(:author) { create(:user) }
|
||||||
|
@ -252,6 +277,7 @@ describe Note do
|
||||||
let(:issue) { create(:issue, project: project) }
|
let(:issue) { create(:issue, project: project) }
|
||||||
let(:other) { create(:issue, project: project) }
|
let(:other) { create(:issue, project: project) }
|
||||||
let(:author) { create(:user) }
|
let(:author) { create(:user) }
|
||||||
|
let(:assignee) { create(:user) }
|
||||||
|
|
||||||
it 'should recognize user-supplied notes as non-system' do
|
it 'should recognize user-supplied notes as non-system' do
|
||||||
@note = create(:note_on_issue)
|
@note = create(:note_on_issue)
|
||||||
|
@ -267,6 +293,11 @@ describe Note do
|
||||||
@note = Note.create_cross_reference_note(issue, other, author, project)
|
@note = Note.create_cross_reference_note(issue, other, author, project)
|
||||||
@note.should be_system
|
@note.should be_system
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'should identify assignee-change notes as system notes' do
|
||||||
|
@note = Note.create_assignee_change_note(issue, project, author, assignee)
|
||||||
|
@note.should be_system
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe :authorization do
|
describe :authorization do
|
||||||
|
|
Loading…
Reference in a new issue