From d0451a050d5c4a3d343077d0820451af5058636b Mon Sep 17 00:00:00 2001
From: Lin Jen-Shin <godfat@godfat.org>
Date: Tue, 12 Jul 2016 18:56:41 +0800
Subject: [PATCH] Test for Project#builds_for and return empty array for
 nothing

---
 app/models/project.rb       |  3 +++
 spec/models/project_spec.rb | 16 +++++++++++++++-
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/app/models/project.rb b/app/models/project.rb
index f3266a1b197..35ffb0a415d 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -430,6 +430,9 @@ class Project < ActiveRecord::Base
   end
 
   def builds_for(build_name, ref = 'HEAD')
+    ct = commit(ref)
+    return [] unless ct
+
     sha = commit(ref).sha
 
     builds.joins(:pipeline).
diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb
index 5a27ccbab0a..06d99240708 100644
--- a/spec/models/project_spec.rb
+++ b/spec/models/project_spec.rb
@@ -359,11 +359,25 @@ describe Project, models: true do
   describe :repository do
     let(:project) { create(:project) }
 
-    it 'should return valid repo' do
+    it 'returns valid repo' do
       expect(project.repository).to be_kind_of(Repository)
     end
   end
 
+  describe '#builds_for' do
+    let(:project) { create(:project) }
+    let(:pipeline) do
+      create(:ci_pipeline, project: project, sha: project.commit.sha)
+    end
+    let(:build) { create(:ci_build, pipeline: pipeline) }
+
+    it 'returns builds for a particular ref' do
+      build_ids = project.builds_for(build.name, build.sha).map(&:id)
+
+      expect(build_ids).to eq([build.id])
+    end
+  end
+
   describe :default_issues_tracker? do
     let(:project) { create(:project) }
     let(:ext_project) { create(:redmine_project) }
-- 
GitLab