diff options
author | Yorick Peterse <yorickpeterse@gmail.com> | 2016-10-21 11:07:04 +0000 |
---|---|---|
committer | Yorick Peterse <yorickpeterse@gmail.com> | 2016-10-21 11:07:04 +0000 |
commit | 60adbef4afb864bf5a19ce6e39dd8fe02ac99c0a (patch) | |
tree | 2d202dc58d13a6b65952ca20f1abfffb344c65c4 | |
parent | e647af363706d181557e7652cacc19cd7c54dd59 (diff) | |
parent | 493367108eef14c8517c6d023ec46267c1e706cf (diff) | |
download | gitlab-ce-60adbef4afb864bf5a19ce6e39dd8fe02ac99c0a.tar.gz |
Merge branch '14192-issues-closed-by-merge-requests-using-metrics-data' into 'master'
Use MergeRequestsClosingIssues cache data on Issue#closed_by_merge_requests method
See merge request !6996
-rw-r--r-- | CHANGELOG.md | 2 | ||||
-rw-r--r-- | app/models/issue.rb | 8 | ||||
-rw-r--r-- | spec/models/issue_spec.rb | 8 |
3 files changed, 16 insertions, 2 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 10446e02d1c..1c5c96c4528 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ Please view this file on the master branch, on stable branches it's out of date. - Simpler arguments passed to named_route on toggle_award_url helper method - Fix: Backup restore doesn't clear cache + - Use MergeRequestsClosingIssues cache data on Issue#closed_by_merge_requests method + ## 8.13.0 (2016-10-22) - Fix save button on project pipeline settings page. (!6955) diff --git a/app/models/issue.rb b/app/models/issue.rb index 133a5993815..89158a50353 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -211,7 +211,13 @@ class Issue < ActiveRecord::Base note.all_references(current_user, extractor: ext) end - ext.merge_requests.select { |mr| mr.open? && mr.closes_issue?(self) } + merge_requests = ext.merge_requests.select(&:open?) + if merge_requests.any? + ids = MergeRequestsClosingIssues.where(merge_request_id: merge_requests.map(&:id), issue_id: id).pluck(:merge_request_id) + merge_requests.select { |mr| mr.id.in?(ids) } + else + [] + end end def moved? diff --git a/spec/models/issue_spec.rb b/spec/models/issue_spec.rb index 3b8b743af2d..60d30eb7418 100644 --- a/spec/models/issue_spec.rb +++ b/spec/models/issue_spec.rb @@ -100,11 +100,17 @@ describe Issue, models: true do end it 'returns the merge request to close this issue' do - allow(mr).to receive(:closes_issue?).with(issue).and_return(true) + mr expect(issue.closed_by_merge_requests).to eq([mr]) end + it "returns an empty array when the merge request is closed already" do + closed_mr + + expect(issue.closed_by_merge_requests).to eq([]) + end + it "returns an empty array when the current issue is closed already" do expect(closed_issue.closed_by_merge_requests).to eq([]) end |