Skip to content
Snippets Groups Projects
Commit 33687db0 authored by Valery Sizov's avatar Valery Sizov
Browse files

Fix counters cache invalidation for Issues and Merge Requests

parent 0d65fd03
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -28,6 +28,7 @@ module Issues
notification_service.close_issue(issue, current_user) if notifications
todo_service.close_issue(issue, current_user)
execute_hooks(issue, 'close')
invalidate_cache_counts(issue.assignees, issue)
end
 
issue
Loading
Loading
Loading
Loading
@@ -8,6 +8,7 @@ module Issues
create_note(issue)
notification_service.reopen_issue(issue, current_user)
execute_hooks(issue, 'reopen')
invalidate_cache_counts(issue.assignees, issue)
end
 
issue
Loading
Loading
Loading
Loading
@@ -13,6 +13,7 @@ module MergeRequests
notification_service.close_mr(merge_request, current_user)
todo_service.close_merge_request(merge_request, current_user)
execute_hooks(merge_request, 'close')
invalidate_cache_counts(merge_request.assignees, merge_request)
end
 
merge_request
Loading
Loading
Loading
Loading
@@ -13,6 +13,7 @@ module MergeRequests
create_note(merge_request)
notification_service.merge_mr(merge_request, current_user)
execute_hooks(merge_request, 'merge')
invalidate_cache_counts(merge_request.assignees, merge_request)
end
 
private
Loading
Loading
Loading
Loading
@@ -10,6 +10,7 @@ module MergeRequests
execute_hooks(merge_request, 'reopen')
merge_request.reload_diff(current_user)
merge_request.mark_as_unchecked
invalidate_cache_counts(merge_request.assignees, merge_request)
end
 
merge_request
Loading
Loading
Loading
Loading
@@ -41,6 +41,12 @@ describe Issues::CloseService, services: true do
 
service.execute(issue)
end
it 'invalidates counter cache for assignees' do
expect_any_instance_of(User).to receive(:invalidate_issue_cache_counts)
service.execute(issue)
end
end
 
describe '#close_issue' do
Loading
Loading
Loading
Loading
@@ -27,6 +27,13 @@ describe Issues::ReopenService, services: true do
project.team << [user, :master]
end
 
it 'invalidates counter cache for assignees' do
issue.assignees << user
expect_any_instance_of(User).to receive(:invalidate_issue_cache_counts)
described_class.new(project, user).execute(issue)
end
context 'when issue is not confidential' do
it 'executes issue hooks' do
expect(project).to receive(:execute_hooks).with(an_instance_of(Hash), :issue_hooks)
Loading
Loading
Loading
Loading
@@ -15,6 +15,8 @@ describe MergeRequests::CloseService, services: true do
end
 
describe '#execute' do
it_behaves_like 'cache counters invalidator'
context 'valid params' do
let(:service) { described_class.new(project, user, {}) }
 
Loading
Loading
require 'spec_helper'
describe MergeRequests::PostMergeService, services: true do
let(:user) { create(:user) }
let(:merge_request) { create(:merge_request, assignee: user) }
let(:project) { merge_request.project }
before do
project.team << [user, :master]
end
describe '#execute' do
it_behaves_like 'cache counters invalidator'
end
end
Loading
Loading
@@ -14,6 +14,8 @@ describe MergeRequests::ReopenService, services: true do
end
 
describe '#execute' do
it_behaves_like 'cache counters invalidator'
context 'valid params' do
let(:service) { described_class.new(project, user, {}) }
 
Loading
Loading
shared_examples 'cache counters invalidator' do
it 'invalidates counter cache for assignees' do
expect_any_instance_of(User).to receive(:invalidate_merge_request_cache_counts)
described_class.new(project, user, {}).execute(merge_request)
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment