Calculate build status only in build badge class

This commit is contained in:
Grzegorz Bizon 2016-07-28 14:58:53 +02:00
parent 9ae1ecf876
commit 0c4fa8619c
2 changed files with 26 additions and 17 deletions

View File

@ -5,8 +5,16 @@ module Gitlab
#
class Build
def initialize(project, ref)
@project, @ref = project, ref
@image = ::Ci::ImageForBuildService.new.execute(project, ref: ref)
@project = project
@ref = ref
end
def status
sha = @project.commit(@ref).try(:sha)
@project.pipelines
.where(sha: sha, ref: @ref)
.status || 'unknown'
end
def metadata
@ -18,11 +26,9 @@ module Gitlab
end
def data
File.read(@image[:path])
end
def to_s
@image[:name].sub(/\.svg$/, '')
File.read(
Rails.root.join('public/ci', 'build-' + status + '.svg')
)
end
end
end

View File

@ -24,9 +24,10 @@ describe Gitlab::Badge::Build do
context 'build success' do
before { build.success! }
describe '#to_s' do
subject { badge.to_s }
it { is_expected.to eq 'build-success' }
describe '#status' do
it 'is successful' do
expect(badge.status).to eq 'success'
end
end
describe '#data' do
@ -41,9 +42,10 @@ describe Gitlab::Badge::Build do
context 'build failed' do
before { build.drop! }
describe '#to_s' do
subject { badge.to_s }
it { is_expected.to eq 'build-failed' }
describe '#status' do
it 'failed' do
expect(badge.status).to eq 'failed'
end
end
describe '#data' do
@ -57,9 +59,10 @@ describe Gitlab::Badge::Build do
end
context 'build does not exist' do
describe '#to_s' do
subject { badge.to_s }
it { is_expected.to eq 'build-unknown' }
describe '#status' do
it 'is unknown' do
expect(badge.status).to eq 'unknown'
end
end
describe '#data' do
@ -81,7 +84,7 @@ describe Gitlab::Badge::Build do
end
it 'does not take outdated pipeline into account' do
expect(badge.to_s).to eq 'build-success'
expect(badge.status).to eq 'success'
end
end