summaryrefslogtreecommitdiff
path: root/spec/features/projects/badges/coverage_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/features/projects/badges/coverage_spec.rb')
-rw-r--r--spec/features/projects/badges/coverage_spec.rb129
1 files changed, 127 insertions, 2 deletions
diff --git a/spec/features/projects/badges/coverage_spec.rb b/spec/features/projects/badges/coverage_spec.rb
index 1760ec880bc..5c1bc1ad239 100644
--- a/spec/features/projects/badges/coverage_spec.rb
+++ b/spec/features/projects/badges/coverage_spec.rb
@@ -12,6 +12,120 @@ RSpec.describe 'test coverage badge' do
sign_in(user)
end
+ it 'user requests coverage badge image for pipeline with custom limits - 80% good' do
+ create_pipeline do |pipeline|
+ create_build(pipeline, coverage: 80, name: 'test:1')
+ end
+
+ show_test_coverage_badge(min_good: 75, min_acceptable: 50, min_medium: 25)
+
+ expect_coverage_badge_color(:good)
+ expect_coverage_badge('80.00%')
+ end
+
+ it 'user requests coverage badge image for pipeline with custom limits - 74% - bad config' do
+ create_pipeline do |pipeline|
+ create_build(pipeline, coverage: 74, name: 'test:1')
+ end
+ # User sets a minimum good value that is lower than min acceptable and min medium,
+ # in which case we force the min acceptable value to be min good -1 and min medium value to be min acceptable -1
+ show_test_coverage_badge(min_good: 75, min_acceptable: 76, min_medium: 77)
+
+ expect_coverage_badge_color(:acceptable)
+ expect_coverage_badge('74.00%')
+ end
+
+ it 'user requests coverage badge image for pipeline with custom limits - 73% - bad config' do
+ create_pipeline do |pipeline|
+ create_build(pipeline, coverage: 73, name: 'test:1')
+ end
+ # User sets a minimum good value that is lower than min acceptable and min medium,
+ # in which case we force the min acceptable value to be min good -1 and min medium value to be min acceptable -1
+ show_test_coverage_badge(min_good: 75, min_acceptable: 76, min_medium: 77)
+
+ expect_coverage_badge_color(:medium)
+ expect_coverage_badge('73.00%')
+ end
+
+ it 'user requests coverage badge image for pipeline with custom limits - 72% - partial config - low' do
+ create_pipeline do |pipeline|
+ create_build(pipeline, coverage: 72, name: 'test:1')
+ end
+ # User only sets good to 75 and leaves the others on the default settings,
+ # in which case we force the min acceptable value to be min good -1 and min medium value to be min acceptable -1
+ show_test_coverage_badge(min_good: 75)
+
+ expect_coverage_badge_color(:low)
+ expect_coverage_badge('72.00%')
+ end
+
+ it 'user requests coverage badge image for pipeline with custom limits - 72% - partial config - medium' do
+ create_pipeline do |pipeline|
+ create_build(pipeline, coverage: 72, name: 'test:1')
+ end
+ # User only sets good to 74 and leaves the others on the default settings,
+ # in which case we force the min acceptable value to be min good -1 and min medium value to be min acceptable -1
+ show_test_coverage_badge(min_good: 74)
+
+ expect_coverage_badge_color(:medium)
+ expect_coverage_badge('72.00%')
+ end
+
+ it 'user requests coverage badge image for pipeline with custom limits - 72% - partial config - medium v2' do
+ create_pipeline do |pipeline|
+ create_build(pipeline, coverage: 72, name: 'test:1')
+ end
+ # User only sets medium to 72 and leaves the others on the defaults good as 95 and acceptable as 90
+ show_test_coverage_badge(min_medium: 72)
+
+ expect_coverage_badge_color(:medium)
+ expect_coverage_badge('72.00%')
+ end
+
+ it 'user requests coverage badge image for pipeline with custom limits - 70% acceptable' do
+ create_pipeline do |pipeline|
+ create_build(pipeline, coverage: 70, name: 'test:1')
+ end
+
+ show_test_coverage_badge(min_good: 75, min_acceptable: 50, min_medium: 25)
+
+ expect_coverage_badge_color(:acceptable)
+ expect_coverage_badge('70.00%')
+ end
+
+ it 'user requests coverage badge image for pipeline with custom limits - 30% medium' do
+ create_pipeline do |pipeline|
+ create_build(pipeline, coverage: 30, name: 'test:1')
+ end
+
+ show_test_coverage_badge(min_good: 75, min_acceptable: 50, min_medium: 25)
+
+ expect_coverage_badge_color(:medium)
+ expect_coverage_badge('30.00%')
+ end
+
+ it 'user requests coverage badge image for pipeline with custom limits - 20% low' do
+ create_pipeline do |pipeline|
+ create_build(pipeline, coverage: 20, name: 'test:1')
+ end
+
+ show_test_coverage_badge(min_good: 75, min_acceptable: 50, min_medium: 25)
+
+ expect_coverage_badge_color(:low)
+ expect_coverage_badge('20.00%')
+ end
+
+ it 'user requests coverage badge image for pipeline with custom limits - nonsense values which use the defaults' do
+ create_pipeline do |pipeline|
+ create_build(pipeline, coverage: 92, name: 'test:1')
+ end
+
+ show_test_coverage_badge(min_good: "nonsense", min_acceptable: "rubbish", min_medium: "NaN")
+
+ expect_coverage_badge_color(:acceptable)
+ expect_coverage_badge('92.00%')
+ end
+
it 'user requests coverage badge image for pipeline' do
create_pipeline do |pipeline|
create_build(pipeline, coverage: 100, name: 'test:1')
@@ -20,6 +134,7 @@ RSpec.describe 'test coverage badge' do
show_test_coverage_badge
+ expect_coverage_badge_color(:good)
expect_coverage_badge('95.00%')
end
@@ -32,6 +147,7 @@ RSpec.describe 'test coverage badge' do
show_test_coverage_badge(job: 'coverage')
+ expect_coverage_badge_color(:medium)
expect_coverage_badge('85.00%')
end
@@ -73,8 +189,9 @@ RSpec.describe 'test coverage badge' do
create(:ci_build, :success, opts)
end
- def show_test_coverage_badge(job: nil)
- visit coverage_project_badges_path(project, ref: :master, job: job, format: :svg)
+ def show_test_coverage_badge(job: nil, min_good: nil, min_acceptable: nil, min_medium: nil)
+ visit coverage_project_badges_path(project, ref: :master, job: job, min_good: min_good,
+ min_acceptable: min_acceptable, min_medium: min_medium, format: :svg)
end
def expect_coverage_badge(coverage)
@@ -82,4 +199,12 @@ RSpec.describe 'test coverage badge' do
expect(page.response_headers['Content-Type']).to include('image/svg+xml')
expect(svg.at(%Q{text:contains("#{coverage}")})).to be_truthy
end
+
+ def expect_coverage_badge_color(color)
+ svg = Nokogiri::HTML(page.body)
+ expect(page.response_headers['Content-Type']).to include('image/svg+xml')
+ badge_color = svg.xpath("//path[starts-with(@d, 'M62')]")[0].attributes['fill'].to_s
+ expected_badge_color = Gitlab::Ci::Badge::Coverage::Template::STATUS_COLOR[color]
+ expect(badge_color).to eq(expected_badge_color)
+ end
end