From 6dc8c0eac28d826a4a58bcb3cdac070f3de2a10c Mon Sep 17 00:00:00 2001 From: Riyad Preukschas Date: Fri, 5 Oct 2012 00:25:40 +0200 Subject: [PATCH] Make MRs also count and display its commits' notes --- app/models/merge_request.rb | 5 +++++ app/views/merge_requests/_merge_request.html.haml | 2 +- spec/models/merge_request_spec.rb | 15 +++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index b6392ce8..5b3c3724 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -186,6 +186,11 @@ class MergeRequest < ActiveRecord::Base patch_path end + + def mr_and_commit_notes + commit_ids = commits.map(&:id) + Note.where("(noteable_type = 'MergeRequest' AND noteable_id = :mr_id) OR (noteable_type = 'Commit' AND noteable_id IN (:commit_ids))", mr_id: id, commit_ids: commit_ids) + end end # == Schema Information diff --git a/app/views/merge_requests/_merge_request.html.haml b/app/views/merge_requests/_merge_request.html.haml index 9d94d670..419419d2 100644 --- a/app/views/merge_requests/_merge_request.html.haml +++ b/app/views/merge_requests/_merge_request.html.haml @@ -9,7 +9,7 @@ - if merge_request.notes.any? %span.btn.small.disabled.grouped %i.icon-comment - = merge_request.notes.count + = merge_request.mr_and_commit_notes.count %span.btn.small.disabled.grouped = merge_request.source_branch → diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb index 7a1f541f..91d404f7 100644 --- a/spec/models/merge_request_spec.rb +++ b/spec/models/merge_request_spec.rb @@ -35,4 +35,19 @@ describe MergeRequest do it { should include_module(IssueCommonality) } it { should include_module(Votes) } end + + describe "#mr_and_commit_notes" do + let!(:merge_request) { Factory.create(:merge_request) } + + before do + merge_request.stub(:commits) { [merge_request.project.commit] } + Factory.create(:note, noteable: merge_request.commits.first) + Factory.create(:note, noteable: merge_request) + end + + it "should include notes for commits" do + merge_request.commits.should_not be_empty + merge_request.mr_and_commit_notes.count.should == 2 + end + end end