Don't create todos for old issue assignees
This commit is contained in:
parent
f277fa1409
commit
d6612fbcee
3 changed files with 30 additions and 5 deletions
|
@ -34,7 +34,7 @@ module Issues
|
|||
if issue.assignees != old_assignees
|
||||
create_assignee_note(issue, old_assignees)
|
||||
notification_service.reassigned_issue(issue, current_user, old_assignees)
|
||||
todo_service.reassigned_issue(issue, current_user)
|
||||
todo_service.reassigned_issue(issue, current_user, old_assignees)
|
||||
end
|
||||
|
||||
if issue.previous_changes.include?('confidential')
|
||||
|
|
|
@ -43,8 +43,8 @@ class TodoService
|
|||
#
|
||||
# * create a pending todo for new assignee if issue is assigned
|
||||
#
|
||||
def reassigned_issue(issue, current_user)
|
||||
create_assignment_todo(issue, current_user)
|
||||
def reassigned_issue(issue, current_user, old_assignees = [])
|
||||
create_assignment_todo(issue, current_user, old_assignees)
|
||||
end
|
||||
|
||||
# When create a merge request we should:
|
||||
|
@ -254,10 +254,11 @@ class TodoService
|
|||
create_mention_todos(project, target, author, note, skip_users)
|
||||
end
|
||||
|
||||
def create_assignment_todo(issuable, author)
|
||||
def create_assignment_todo(issuable, author, old_assignees = [])
|
||||
if issuable.assignees.any?
|
||||
assignees = issuable.assignees - old_assignees
|
||||
attributes = attributes_for_todo(issuable.project, issuable, author, Todo::ASSIGNED)
|
||||
create_todos(issuable.assignees, attributes)
|
||||
create_todos(assignees, attributes)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -267,6 +267,30 @@ describe Issues::UpdateService, :mailer do
|
|||
end
|
||||
end
|
||||
|
||||
context 'when a new assignee added' do
|
||||
subject { update_issue(assignees: issue.assignees + [user2]) }
|
||||
|
||||
it 'creates only 1 new todo' do
|
||||
expect { subject }.to change { Todo.count }.by(1)
|
||||
end
|
||||
|
||||
it 'creates a todo for new assignee' do
|
||||
subject
|
||||
|
||||
attributes = {
|
||||
project: project,
|
||||
author: user,
|
||||
user: user2,
|
||||
target_id: issue.id,
|
||||
target_type: issue.class.name,
|
||||
action: Todo::ASSIGNED,
|
||||
state: :pending
|
||||
}
|
||||
|
||||
expect(Todo.where(attributes).count).to eq(1)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when the milestone change' do
|
||||
it 'marks todos as done' do
|
||||
update_issue(milestone: create(:milestone))
|
||||
|
|
Loading…
Reference in a new issue