From 62ed7c3a277204aea2943adec2f63f3786d80def Mon Sep 17 00:00:00 2001
From: Pierre-Yves Bigourdan <10694593+PyvesB@users.noreply.github.com>
Date: Mon, 22 Jul 2024 19:54:18 +0200
Subject: [PATCH] Mock [JenkinsCoverage] Cobertura job found test (#10372)

---
 services/jenkins/jenkins-coverage.service.js |  5 ++--
 services/jenkins/jenkins-coverage.tester.js  | 30 ++++++++++++++++----
 2 files changed, 27 insertions(+), 8 deletions(-)

diff --git a/services/jenkins/jenkins-coverage.service.js b/services/jenkins/jenkins-coverage.service.js
index 36dec6f1a0..9256d42014 100644
--- a/services/jenkins/jenkins-coverage.service.js
+++ b/services/jenkins/jenkins-coverage.service.js
@@ -115,12 +115,13 @@ export default class JenkinsCoverage extends JenkinsBase {
         parameters: [
           pathParam({
             name: 'format',
-            example: 'cobertura',
+            example: 'jacoco',
             schema: { type: 'string', enum: this.getEnum('format') },
           }),
           queryParam({
             name: 'jobUrl',
-            example: 'https://jenkins.sqlalchemy.org/job/dogpile_coverage',
+            example:
+              'https://ci-maven.apache.org/job/Maven/job/maven-box/job/maven-surefire/job/master',
             required: true,
           }),
         ],
diff --git a/services/jenkins/jenkins-coverage.tester.js b/services/jenkins/jenkins-coverage.tester.js
index 387077181c..1fb29825e5 100644
--- a/services/jenkins/jenkins-coverage.tester.js
+++ b/services/jenkins/jenkins-coverage.tester.js
@@ -19,17 +19,35 @@ t.create('jacoco: job not found')
   .get('/jacoco.json?jobUrl=https://ci-maven.apache.org/job/does-not-exist')
   .expectBadge({ label: 'coverage', message: 'job or coverage not found' })
 
-t.create('cobertura: job not found')
-  .get(
-    '/cobertura.json?jobUrl=https://jenkins.sqlalchemy.org/job/does-not-exist',
-  )
-  .expectBadge({ label: 'coverage', message: 'job or coverage not found' })
+const coverageCoberturaResponse = {
+  _class: 'io.jenkins.plugins.coverage.targets.CoverageResult',
+  results: {
+    elements: [
+      { name: 'Classes', ratio: 52.0 },
+      { name: 'Lines', ratio: 40.66363 },
+    ],
+  },
+}
 
 t.create('cobertura: job found')
   .get(
     '/cobertura.json?jobUrl=https://jenkins.sqlalchemy.org/job/dogpile_coverage',
   )
-  .expectBadge({ label: 'coverage', message: isIntegerPercentage })
+  .intercept(nock =>
+    nock(
+      'https://jenkins.sqlalchemy.org/job/dogpile_coverage/lastCompletedBuild',
+    )
+      .get('/cobertura/api/json')
+      .query(true)
+      .reply(200, coverageCoberturaResponse),
+  )
+  .expectBadge({ label: 'coverage', message: '41%' })
+
+t.create('cobertura: job not found')
+  .get(
+    '/cobertura.json?jobUrl=https://jenkins.sqlalchemy.org/job/does-not-exist',
+  )
+  .expectBadge({ label: 'coverage', message: 'job or coverage not found' })
 
 const coverageApiV1Response = {
   _class: 'io.jenkins.plugins.coverage.targets.CoverageResult',
-- 
GitLab