Fix issuable assignee update bug when previous assignee is null

This commit is contained in:
Felipe Artur 2016-12-14 17:57:14 -02:00
parent b6d069c10f
commit 77deeb12f7
3 changed files with 28 additions and 3 deletions

View File

@ -92,9 +92,10 @@ module Issuable
after_save :record_metrics
def update_assignee_cache_counts
# make sure we flush the cache for both the old *and* new assignee
User.find(assignee_id_was).update_cache_counts if assignee_id_was
assignee.update_cache_counts if assignee
# make sure we flush the cache for both the old *and* new assignees(if they exist)
previous_assignee = User.find_by_id(assignee_id_was)
previous_assignee.try(:update_cache_counts)
assignee.try(:update_cache_counts)
end
# We want to use optimistic lock for cases when only title or description are involved

View File

@ -0,0 +1,4 @@
---
title: Fix issuable assignee update bug when previous assignee is null
merge_request:
author:

View File

@ -44,6 +44,26 @@ describe Issue, "Issuable" do
it { expect(described_class).to respond_to(:assigned) }
end
describe "after_save" do
describe "#update_cache_counts" do
context "when previous assignee exists" do
it "user updates cache counts" do
expect(user).to receive(:update_cache_counts)
issue.update(assignee: user)
end
end
context "when previous assignee does not exist" do
it "does not raise error" do
issue.update(assignee_id: "")
expect { issue.update(assignee_id: user) }.not_to raise_error
end
end
end
end
describe ".search" do
let!(:searchable_issue) { create(:issue, title: "Searchable issue") }