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