summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-02-18 18:09:21 -0200
committerDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-02-20 12:12:05 -0200
commit44656136475d8842628d0a1112aecc9ec412a16f (patch)
treeefd13354ac1292ee7443222e2267e2bfa2632ea7
parent424cb9ccaef35717bd934dd48f8bd69515210a50 (diff)
downloadgitlab-ce-44656136475d8842628d0a1112aecc9ec412a16f.tar.gz
Explicit mention of the assignee make a task
Since potentially the previous assign-task has already been handled.
-rw-r--r--app/services/task_service.rb11
-rw-r--r--spec/services/task_service_spec.rb8
2 files changed, 9 insertions, 10 deletions
diff --git a/app/services/task_service.rb b/app/services/task_service.rb
index cdd025eadc5..bfd724a0f51 100644
--- a/app/services/task_service.rb
+++ b/app/services/task_service.rb
@@ -150,7 +150,6 @@ class TaskService
end
mentioned_users.delete(author)
- mentioned_users.delete(target.assignee) if target.respond_to?(:assignee)
mentioned_users.uniq
end
@@ -177,6 +176,7 @@ class TaskService
end
mentioned_users = build_mentioned_users(project, target, author)
+ mentioned_users.delete(issuable.assignee)
mentioned_users.each do |mentioned_user|
create_task(project, target, author, mentioned_user, Task::MENTIONED)
@@ -185,16 +185,15 @@ class TaskService
def update_issuable(issuable, current_user)
project = issuable.project
- target = issuable
author = current_user
- mark_pending_tasks_as_done(target, author)
+ mark_pending_tasks_as_done(issuable, author)
- mentioned_users = build_mentioned_users(project, target, author)
+ mentioned_users = build_mentioned_users(project, issuable, author)
mentioned_users.each do |mentioned_user|
- unless pending_tasks(mentioned_user, project, target, action: Task::MENTIONED).exists?
- create_task(project, target, author, mentioned_user, Task::MENTIONED)
+ unless pending_tasks(mentioned_user, project, issuable, action: Task::MENTIONED).exists?
+ create_task(project, issuable, author, mentioned_user, Task::MENTIONED)
end
end
end
diff --git a/spec/services/task_service_spec.rb b/spec/services/task_service_spec.rb
index a5a497c7002..75498514093 100644
--- a/spec/services/task_service_spec.rb
+++ b/spec/services/task_service_spec.rb
@@ -56,15 +56,15 @@ describe TaskService, services: true do
service.update_issue(issue, author)
should_create_task(user: michael, target: issue, action: Task::MENTIONED)
+ should_create_task(user: john_doe, target: issue, action: Task::MENTIONED)
should_not_create_task(user: author, target: issue, action: Task::MENTIONED)
- should_not_create_task(user: john_doe, target: issue, action: Task::MENTIONED)
should_not_create_task(user: stranger, target: issue, action: Task::MENTIONED)
end
it 'does not create a task if user was already mentioned' do
create(:task, :mentioned, user: michael, project: project, target: issue, author: author)
- should_not_create_any_task { service.update_issue(issue, author) }
+ expect { service.update_issue(issue, author) }.not_to change(michael.tasks, :count)
end
end
@@ -184,15 +184,15 @@ describe TaskService, services: true do
service.update_merge_request(mr_assigned, author)
should_create_task(user: michael, target: mr_assigned, action: Task::MENTIONED)
+ should_create_task(user: john_doe, target: mr_assigned, action: Task::MENTIONED)
should_not_create_task(user: author, target: mr_assigned, action: Task::MENTIONED)
- should_not_create_task(user: john_doe, target: mr_assigned, action: Task::MENTIONED)
should_not_create_task(user: stranger, target: mr_assigned, action: Task::MENTIONED)
end
it 'does not create a task if user was already mentioned' do
create(:task, :mentioned, user: michael, project: project, target: mr_assigned, author: author)
- should_not_create_any_task { service.update_merge_request(mr_assigned, author) }
+ expect { service.update_merge_request(mr_assigned, author) }.not_to change(michael.tasks, :count)
end
end