Rename build to pipeline for status badges

First commit in probably 2, for resolve gitlab-org/gitlab-ce#15582. This
commit is renaming files and classes from build to pipeline. Also
wording is editted to pipeline. Given `pipeline` had more characters
than `build`, I've made the field a bit wider. The width now matchers
the one for the coverage badge, so they look nice when in a table
format, or in a list.

As soon as this commit is merged to master, and released, the build.svg
is deprecated, meaning that all users which already placed a badge
should update it. However, to make sure it keeps working tests are added
for this case.
This commit is contained in:
Z.J. van de Weg 2017-07-19 13:08:47 +02:00
parent eaceee0fb9
commit 2086483b24
12 changed files with 83 additions and 54 deletions

View File

@ -3,11 +3,11 @@ class Projects::BadgesController < Projects::ApplicationController
before_action :authorize_admin_project!, only: [:index]
before_action :no_cache_headers, except: [:index]
def build
build_status = Gitlab::Badge::Build::Status
def pipeline
pipeline_status = Gitlab::Badge::Pipeline::Status
.new(project, params[:ref])
render_badge build_status
render_badge pipeline_status
end
def coverage

View File

@ -35,7 +35,7 @@ module Projects
def define_badges_variables
@ref = params[:ref] || @project.default_branch || 'master'
@badges = [Gitlab::Badge::Build::Status,
@badges = [Gitlab::Badge::Pipeline::Status,
Gitlab::Badge::Coverage::Report]
@badges.map! do |badge|

View File

@ -379,7 +379,9 @@ constraints(ProjectUrlConstrainer.new) do
collection do
scope '*ref', constraints: { ref: Gitlab::PathRegex.git_reference_regex } do
constraints format: /svg/ do
get :build
# Keep around until 10.0, see gitlab-org/gitlab-ce#35307
get :build, to: "badges#pipeline"
get :pipeline
get :coverage
end
end

View File

@ -5,7 +5,7 @@ class Spinach::Features::ProjectBadgesBuild < Spinach::FeatureSteps
include RepoHelpers
step 'I display builds badge for a master branch' do
visit build_project_badges_path(@project, ref: :master, format: :svg)
visit pipeline_project_badges_path(@project, ref: :master, format: :svg)
end
step 'I should see a build success badge' do

View File

@ -1,8 +1,8 @@
module Gitlab
module Badge
module Build
module Pipeline
##
# Class that describes build badge metadata
# Class that describes pipeline badge metadata
#
class Metadata < Badge::Metadata
def initialize(badge)
@ -11,11 +11,11 @@ module Gitlab
end
def title
'build status'
'pipeline status'
end
def image_url
build_project_badges_url(@project, @ref, format: :svg)
pipeline_project_badges_url(@project, @ref, format: :svg)
end
def link_url

View File

@ -1,8 +1,8 @@
module Gitlab
module Badge
module Build
module Pipeline
##
# Build status badge
# Pipeline status badge
#
class Status < Badge::Base
attr_reader :project, :ref
@ -15,7 +15,7 @@ module Gitlab
end
def entity
'build'
'pipeline'
end
def status
@ -25,11 +25,11 @@ module Gitlab
end
def metadata
@metadata ||= Build::Metadata.new(self)
@metadata ||= Pipeline::Metadata.new(self)
end
def template
@template ||= Build::Template.new(self)
@template ||= Pipeline::Template.new(self)
end
end
end

View File

@ -1,8 +1,8 @@
module Gitlab
module Badge
module Build
module Pipeline
##
# Class that represents a build badge template.
# Class that represents a pipeline badge template.
#
# Template object will be passed to badge.svg.erb template.
#
@ -31,7 +31,7 @@ module Gitlab
end
def key_width
38
62
end
def value_width

View File

@ -0,0 +1,28 @@
require 'spec_helper'
describe Projects::BadgesController do
let(:project) { pipeline.project }
let!(:pipeline) { create(:ci_empty_pipeline) }
let(:user) { create(:user) }
before do
project.add_master(user)
sign_in(user)
end
it 'requests the pipeline badge successfully' do
get_badge(:pipeline)
expect(response).to have_http_status(:ok)
end
it 'requests the coverage badge successfully' do
get_badge(:coverage)
expect(response).to have_http_status(:ok)
end
def get_badge(badge)
get badge, namespace_id: project.namespace.to_param, project_id: project, ref: pipeline.ref, format: :svg
end
end

View File

@ -10,16 +10,16 @@ feature 'list of badges' do
end
scenario 'user wants to see build status badge' do
page.within('.build-status') do
expect(page).to have_content 'build status'
page.within('.pipeline-status') do
expect(page).to have_content 'pipeline status'
expect(page).to have_content 'Markdown'
expect(page).to have_content 'HTML'
expect(page).to have_content 'AsciiDoc'
expect(page).to have_css('.highlight', count: 3)
expect(page).to have_xpath("//img[@alt='build status']")
expect(page).to have_xpath("//img[@alt='pipeline status']")
page.within('.highlight', match: :first) do
expect(page).to have_content 'badges/master/build.svg'
expect(page).to have_content 'badges/master/pipeline.svg'
end
end
end
@ -40,14 +40,14 @@ feature 'list of badges' do
end
scenario 'user changes current ref of build status badge', js: true do
page.within('.build-status') do
page.within('.pipeline-status') do
first('.js-project-refs-dropdown').click
page.within '.project-refs-form' do
click_link 'improve/awesome'
end
expect(page).to have_content 'badges/improve/awesome/build.svg'
expect(page).to have_content 'badges/improve/awesome/pipeline.svg'
end
end
end

View File

@ -1,7 +1,7 @@
require 'spec_helper'
require 'lib/gitlab/badge/shared/metadata'
describe Gitlab::Badge::Build::Metadata do
describe Gitlab::Badge::Pipeline::Metadata do
let(:badge) { double(project: create(:empty_project), ref: 'feature') }
let(:metadata) { described_class.new(badge) }
@ -9,13 +9,13 @@ describe Gitlab::Badge::Build::Metadata do
describe '#title' do
it 'returns build status title' do
expect(metadata.title).to eq 'build status'
expect(metadata.title).to eq 'pipeline status'
end
end
describe '#image_url' do
it 'returns valid url' do
expect(metadata.image_url).to include 'badges/feature/build.svg'
expect(metadata.image_url).to include 'badges/feature/pipeline.svg'
end
end

View File

@ -1,36 +1,35 @@
require 'spec_helper'
describe Gitlab::Badge::Build::Status do
describe Gitlab::Badge::Pipeline::Status do
let(:project) { create(:project, :repository) }
let(:sha) { project.commit.sha }
let(:branch) { 'master' }
let(:badge) { described_class.new(project, branch) }
describe '#entity' do
it 'always says build' do
expect(badge.entity).to eq 'build'
it 'always says pipeline' do
expect(badge.entity).to eq 'pipeline'
end
end
describe '#template' do
it 'returns badge template' do
expect(badge.template.key_text).to eq 'build'
expect(badge.template.key_text).to eq 'pipeline'
end
end
describe '#metadata' do
it 'returns badge metadata' do
expect(badge.metadata.image_url)
.to include 'badges/master/build.svg'
expect(badge.metadata.image_url).to include 'badges/master/pipeline.svg'
end
end
context 'build exists' do
let!(:build) { create_build(project, sha, branch) }
context 'pipeline exists' do
let!(:pipeline) { create_pipeline(project, sha, branch) }
context 'build success' do
context 'pipeline success' do
before do
build.success!
pipeline.success!
end
describe '#status' do
@ -40,9 +39,9 @@ describe Gitlab::Badge::Build::Status do
end
end
context 'build failed' do
context 'pipeline failed' do
before do
build.drop!
pipeline.drop!
end
describe '#status' do
@ -54,10 +53,10 @@ describe Gitlab::Badge::Build::Status do
context 'when outdated pipeline for given ref exists' do
before do
build.success!
pipeline.success!
old_build = create_build(project, '11eeffdd', branch)
old_build.drop!
old_pipeline = create_pipeline(project, '11eeffdd', branch)
old_pipeline.drop!
end
it 'does not take outdated pipeline into account' do
@ -67,10 +66,10 @@ describe Gitlab::Badge::Build::Status do
context 'when multiple pipelines exist for given sha' do
before do
build.drop!
pipeline.drop!
new_build = create_build(project, sha, branch)
new_build.success!
new_pipeline = create_pipeline(project, sha, branch)
new_pipeline.success!
end
it 'does not take outdated pipeline into account' do
@ -87,7 +86,7 @@ describe Gitlab::Badge::Build::Status do
end
end
def create_build(project, sha, branch)
def create_pipeline(project, sha, branch)
pipeline = create(:ci_empty_pipeline,
project: project,
sha: sha,

View File

@ -1,12 +1,12 @@
require 'spec_helper'
describe Gitlab::Badge::Build::Template do
let(:badge) { double(entity: 'build', status: 'success') }
describe Gitlab::Badge::Pipeline::Template do
let(:badge) { double(entity: 'pipeline', status: 'success') }
let(:template) { described_class.new(badge) }
describe '#key_text' do
it 'is always says build' do
expect(template.key_text).to eq 'build'
it 'is always says pipeline' do
expect(template.key_text).to eq 'pipeline'
end
end
@ -18,11 +18,11 @@ describe Gitlab::Badge::Build::Template do
describe 'widths and text anchors' do
it 'has fixed width and text anchors' do
expect(template.width).to eq 92
expect(template.key_width).to eq 38
expect(template.width).to eq 116
expect(template.key_width).to eq 62
expect(template.value_width).to eq 54
expect(template.key_text_anchor).to eq 19
expect(template.value_text_anchor).to eq 65
expect(template.key_text_anchor).to eq 31
expect(template.value_text_anchor).to eq 89
end
end