diff options
| author | Douglas Barbosa Alexandre <dbalexandre@gmail.com> | 2016-02-18 18:09:21 -0200 |
|---|---|---|
| committer | Douglas Barbosa Alexandre <dbalexandre@gmail.com> | 2016-02-20 12:12:05 -0200 |
| commit | 44656136475d8842628d0a1112aecc9ec412a16f (patch) | |
| tree | efd13354ac1292ee7443222e2267e2bfa2632ea7 | |
| parent | 424cb9ccaef35717bd934dd48f8bd69515210a50 (diff) | |
| download | gitlab-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.rb | 11 | ||||
| -rw-r--r-- | spec/services/task_service_spec.rb | 8 |
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 |
