diff options
| author | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2016-08-11 13:58:57 +0200 |
|---|---|---|
| committer | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2016-08-15 14:39:46 +0200 |
| commit | 7b840c8483e2fe17a6c04474323cfb57c3c8a7d3 (patch) | |
| tree | 5c1ead65acae60d69b24550821b5b88c0271c978 | |
| parent | cdb0caaf320a67f193a7ab9faac9271a625d8b98 (diff) | |
| download | gitlab-ce-7b840c8483e2fe17a6c04474323cfb57c3c8a7d3.tar.gz | |
Add coverage report badge metadata class
| -rw-r--r-- | config/routes.rb | 5 | ||||
| -rw-r--r-- | lib/gitlab/badge/coverage/metadata.rb | 38 | ||||
| -rw-r--r-- | spec/lib/gitlab/badge/coverage/metadata_spec.rb | 24 |
3 files changed, 66 insertions, 1 deletions
diff --git a/config/routes.rb b/config/routes.rb index 9a98fab15a3..cf6773917cf 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -869,7 +869,10 @@ Rails.application.routes.draw do resources :badges, only: [:index] do collection do scope '*ref', constraints: { ref: Gitlab::Regex.git_reference_regex } do - get :build, constraints: { format: /svg/ } + constraints format: /svg/ do + get :build + get :coverage + end end end end diff --git a/lib/gitlab/badge/coverage/metadata.rb b/lib/gitlab/badge/coverage/metadata.rb new file mode 100644 index 00000000000..ae9e5e84051 --- /dev/null +++ b/lib/gitlab/badge/coverage/metadata.rb @@ -0,0 +1,38 @@ +module Gitlab + module Badge + module Coverage + ## + # Class that describes coverage badge metadata + # + class Metadata + include Gitlab::Application.routes.url_helpers + include ActionView::Helpers::AssetTagHelper + include ActionView::Helpers::UrlHelper + + def initialize(badge) + @project = badge.project + @ref = badge.ref + @job = badge.job + end + + def to_html + link_to(image_tag(image_url, alt: 'coverage report'), link_url) + end + + def to_markdown + "[](#{link_url})" + end + + def image_url + coverage_namespace_project_badges_url(@project.namespace, + @project, @ref, + format: :svg) + end + + def link_url + namespace_project_commits_url(@project.namespace, @project, id: @ref) + end + end + end + end +end diff --git a/spec/lib/gitlab/badge/coverage/metadata_spec.rb b/spec/lib/gitlab/badge/coverage/metadata_spec.rb new file mode 100644 index 00000000000..995b1a329ba --- /dev/null +++ b/spec/lib/gitlab/badge/coverage/metadata_spec.rb @@ -0,0 +1,24 @@ +require 'spec_helper' +require 'lib/gitlab/badge/shared/metadata' + +describe Gitlab::Badge::Coverage::Metadata do + let(:badge) do + double(project: create(:project), ref: 'feature', job: 'test') + end + + let(:metadata) { described_class.new(badge) } + + it_behaves_like 'badge metadata' + + describe '#image_url' do + it 'returns valid url' do + expect(metadata.image_url).to include 'badges/feature/coverage.svg' + end + end + + describe '#link_url' do + it 'returns valid link' do + expect(metadata.link_url).to include 'commits/feature' + end + end +end |
