summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-02-16 23:54:10 -0200
committerDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-02-20 12:10:26 -0200
commit372cdf4ce5fa124e03e2c93e9d1ed586d489b1d8 (patch)
tree688c6a582f2e12701ab029c65c459020e08c569f
parentc86b12bf69828da47dc535021aa3847d61d2d642 (diff)
downloadgitlab-ce-372cdf4ce5fa124e03e2c93e9d1ed586d489b1d8.tar.gz
Marks pending tasks for an user as done when he merge the MR
-rw-r--r--app/services/merge_requests/post_merge_service.rb1
-rw-r--r--app/services/task_service.rb8
-rw-r--r--spec/services/task_service_spec.rb17
3 files changed, 26 insertions, 0 deletions
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 = {})