From 372cdf4ce5fa124e03e2c93e9d1ed586d489b1d8 Mon Sep 17 00:00:00 2001 From: Douglas Barbosa Alexandre Date: Tue, 16 Feb 2016 23:54:10 -0200 Subject: [PATCH] Marks pending tasks for an user as done when he merge the MR --- .../merge_requests/post_merge_service.rb | 1 + app/services/task_service.rb | 8 ++++++++ spec/services/task_service_spec.rb | 17 +++++++++++++++++ 3 files changed, 26 insertions(+) diff --git a/app/services/merge_requests/post_merge_service.rb b/app/services/merge_requests/post_merge_service.rb index 8f25c5e2496..63c2f1f4249 100644 --- a/app/services/merge_requests/post_merge_service.rb +++ b/app/services/merge_requests/post_merge_service.rb @@ -11,6 +11,7 @@ module MergeRequests create_merge_event(merge_request, current_user) create_note(merge_request) notification_service.merge_mr(merge_request, current_user) + task_service.merge_merge_request(merge_request, current_user) execute_hooks(merge_request, 'merge') end diff --git a/app/services/task_service.rb b/app/services/task_service.rb index 8254f16581e..2d65eee854d 100644 --- a/app/services/task_service.rb +++ b/app/services/task_service.rb @@ -54,6 +54,14 @@ class TaskService reassigned_issuable(merge_request, current_user) end + # When merge a merge request we should: + # + # * mark all pending tasks related to the target for the current user as done + # + def merge_merge_request(merge_request, current_user) + mark_as_done(merge_request, current_user) + end + # When we mark a task as done we should: # # * mark all pending tasks related to the target for the user as done diff --git a/spec/services/task_service_spec.rb b/spec/services/task_service_spec.rb index 124f1c659d0..8e78f4e242a 100644 --- a/spec/services/task_service_spec.rb +++ b/spec/services/task_service_spec.rb @@ -167,6 +167,23 @@ describe TaskService, services: true do is_expected_to_not_create_task { service.reassigned_merge_request(mr_assigned, author) } end end + + describe '#merge_merge_request' do + let!(:first_pending_task) do + create(:pending_assigned_task, user: john_doe, project: project, target: mr_assigned, author: author) + end + + let!(:second_pending_task) do + create(:pending_assigned_task, user: john_doe, project: project, target: mr_assigned, author: author) + end + + it 'marks related pending tasks to the target for the user as done' do + service.merge_merge_request(mr_assigned, john_doe) + + expect(first_pending_task.reload).to be_done + expect(second_pending_task.reload).to be_done + end + end end def is_expected_to_create_pending_task(attributes = {})