diff options
-rw-r--r-- | lib/gitlab/badge/build.rb | 21 | ||||
-rw-r--r-- | spec/lib/gitlab/badge/build_spec.rb | 40 |
2 files changed, 21 insertions, 40 deletions
diff --git a/lib/gitlab/badge/build.rb b/lib/gitlab/badge/build.rb index c94ef3e9678..1de721a2269 100644 --- a/lib/gitlab/badge/build.rb +++ b/lib/gitlab/badge/build.rb @@ -4,35 +4,26 @@ module Gitlab # Build badge # class Build + delegate :key_text, :value_text, to: :template + def initialize(project, ref) @project = project @ref = ref + @sha = @project.commit(@ref).try(:sha) end def status - sha = @project.commit(@ref).try(:sha) - @project.pipelines - .where(sha: sha, ref: @ref) + .where(sha: @sha, ref: @ref) .status || 'unknown' end def metadata - Build::Metadata.new(@project, @ref) + @metadata ||= Build::Metadata.new(@project, @ref) end def template - Build::Template.new(status) - end - - def type - 'image/svg+xml' - end - - def data - File.read( - Rails.root.join('public/ci', 'build-' + status + '.svg') - ) + @template ||= Build::Template.new(status) end end end diff --git a/spec/lib/gitlab/badge/build_spec.rb b/spec/lib/gitlab/badge/build_spec.rb index 1b36c0a36ea..f9abbdaf585 100644 --- a/spec/lib/gitlab/badge/build_spec.rb +++ b/spec/lib/gitlab/badge/build_spec.rb @@ -6,11 +6,6 @@ describe Gitlab::Badge::Build do let(:branch) { 'master' } let(:badge) { described_class.new(project, branch) } - describe '#type' do - subject { badge.type } - it { is_expected.to eq 'image/svg+xml' } - end - describe '#metadata' do it 'returns badge metadata' do expect(badge.metadata.image_url) @@ -18,6 +13,12 @@ describe Gitlab::Badge::Build do end end + describe '#key_text' do + it 'always says build' do + expect(badge.key_text).to eq 'build' + end + end + context 'build exists' do let!(:build) { create_build(project, sha, branch) } @@ -30,11 +31,9 @@ describe Gitlab::Badge::Build do end end - describe '#data' do - let(:data) { badge.data } - - it 'contains information about success' do - expect(status_node(data, 'success')).to be_truthy + describe '#value_text' do + it 'returns correct value text' do + expect(badge.value_text).to eq 'success' end end end @@ -48,11 +47,9 @@ describe Gitlab::Badge::Build do end end - describe '#data' do - let(:data) { badge.data } - - it 'contains information about failure' do - expect(status_node(data, 'failed')).to be_truthy + describe '#value_text' do + it 'has correct value text' do + expect(badge.value_text).to eq 'failed' end end end @@ -65,11 +62,9 @@ describe Gitlab::Badge::Build do end end - describe '#data' do - let(:data) { badge.data } - - it 'contains infromation about unknown build' do - expect(status_node(data, 'unknown')).to be_truthy + describe '#value_text' do + it 'has correct value text' do + expect(badge.value_text).to eq 'unknown' end end end @@ -95,9 +90,4 @@ describe Gitlab::Badge::Build do create(:ci_build, pipeline: pipeline, stage: 'notify') end - - def status_node(data, status) - xml = Nokogiri::XML.parse(data) - xml.at(%Q{text:contains("#{status}")}) - end end |