summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean McGivern <sean@gitlab.com>2017-09-28 17:09:35 +0100
committerSean McGivern <sean@gitlab.com>2017-09-28 17:09:35 +0100
commitdc32128de976d864ca143c4b56fa1b45531e277e (patch)
tree1aa1166f6aa2461895bfd5760c8a4ac0b9f2cf5d
parent3209c071402cc14b006aabd45bd310395cef53a5 (diff)
downloadgitlab-ce-dc32128de976d864ca143c4b56fa1b45531e277e.tar.gz
Clear merge requests counter cache after merge
Before this change, the MR counter in the sidebar would be wrong if an MR had been merged since the last update, but not opened or closed, as merging did not trigger a counter cache update.
-rw-r--r--app/services/merge_requests/post_merge_service.rb1
-rw-r--r--changelogs/unreleased/fix-mr-sidebar-counter-after-merge.yml5
-rw-r--r--spec/services/merge_requests/post_merge_service_spec.rb11
3 files changed, 17 insertions, 0 deletions
diff --git a/app/services/merge_requests/post_merge_service.rb b/app/services/merge_requests/post_merge_service.rb
index 261a8bfa200..b1d6bac4d4a 100644
--- a/app/services/merge_requests/post_merge_service.rb
+++ b/app/services/merge_requests/post_merge_service.rb
@@ -14,6 +14,7 @@ module MergeRequests
notification_service.merge_mr(merge_request, current_user)
execute_hooks(merge_request, 'merge')
invalidate_cache_counts(merge_request, users: merge_request.assignees)
+ merge_request.update_project_counter_caches
end
private
diff --git a/changelogs/unreleased/fix-mr-sidebar-counter-after-merge.yml b/changelogs/unreleased/fix-mr-sidebar-counter-after-merge.yml
new file mode 100644
index 00000000000..22a3efb8b1e
--- /dev/null
+++ b/changelogs/unreleased/fix-mr-sidebar-counter-after-merge.yml
@@ -0,0 +1,5 @@
+---
+title: Fix merge request counter updates after merge
+merge_request:
+author:
+type: fixed
diff --git a/spec/services/merge_requests/post_merge_service_spec.rb b/spec/services/merge_requests/post_merge_service_spec.rb
index a37cdab8928..d2bd05d921f 100644
--- a/spec/services/merge_requests/post_merge_service_spec.rb
+++ b/spec/services/merge_requests/post_merge_service_spec.rb
@@ -11,5 +11,16 @@ describe MergeRequests::PostMergeService do
describe '#execute' do
it_behaves_like 'cache counters invalidator'
+
+ it 'refreshes the number of open merge requests for a valid MR', :use_clean_rails_memory_store_caching do
+ # Cache the counter before the MR changed state.
+ project.open_merge_requests_count
+ merge_request.update!(state: 'merged')
+
+ service = described_class.new(project, user, {})
+
+ expect { service.execute(merge_request) }
+ .to change { project.open_merge_requests_count }.from(1).to(0)
+ end
end
end