Commit bc179962 authored by Grzegorz Bizon's avatar Grzegorz Bizon

Improve builds badge specs, remove legacy methods

parent 8ae22209
......@@ -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
......
......@@ -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
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment