1
0
mirror of https://github.com/badges/shields.git synced 2025-04-18 19:44:04 +03:00
shields/services/azure-devops/azure-devops-coverage.tester.js
dependabot[bot] b9d96755ec
chore(deps-dev): bump prettier from 2.8.8 to 3.0.0 (#9357)
* chore(deps-dev): bump prettier from 2.8.8 to 3.0.0

Bumps [prettier](https://github.com/prettier/prettier) from 2.8.8 to 3.0.0.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.8.8...3.0.0)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* reformat all the things (prettier 3)

* update tests to await calls to prettier.format()

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: chris48s <git@chris-shaw.dev>
2023-07-10 09:27:51 +00:00

265 lines
7.0 KiB
JavaScript

import { isIntegerPercentage } from '../test-validators.js'
import { createServiceTester } from '../tester.js'
export const t = await createServiceTester()
const org = 'swellaby'
const project = 'opensource'
const linuxDefinitionId = 25
const macDefinitionId = 26
const windowsDefinitionId = 24
const nonExistentDefinitionId = 234421
const buildId = 946
const uriPrefix = `/${org}/${project}`
const azureDevOpsApiBaseUri = `https://dev.azure.com/${org}/${project}/_apis`
const mockBadgeUriPath = `${uriPrefix}/${macDefinitionId}.json`
const mockLatestBuildApiUriPath = `/build/builds?definitions=${macDefinitionId}&%24top=1&statusFilter=completed&api-version=5.0-preview.4`
const mockCodeCoverageApiUriPath = `/test/codecoverage?buildId=${buildId}&api-version=5.0-preview.1`
const latestBuildResponse = {
count: 1,
value: [{ id: buildId }],
}
const firstLineCovStat = {
label: 'Line',
total: 23,
covered: 19,
}
const firstLinesCovStat = {
label: 'Lines',
total: 23,
covered: 19,
}
const branchCovStat = {
label: 'Branches',
total: 11,
covered: 7,
}
const secondLineCovStat = {
label: 'Lines',
total: 47,
covered: 35,
}
const secondLinesCovStat = {
label: 'Lines',
total: 47,
covered: 35,
}
const expCoverageSingleReport = '83%'
const expCoverageMultipleReports = '77%'
t.create('default branch coverage')
.get(`${uriPrefix}/${linuxDefinitionId}.json`)
.expectBadge({
label: 'coverage',
message: isIntegerPercentage,
})
t.create('named branch without ref')
.get(`${uriPrefix}/${windowsDefinitionId}/init.json`)
.expectBadge({
label: 'coverage',
message: isIntegerPercentage,
})
t.create('unknown build definition')
.get(`${uriPrefix}/${nonExistentDefinitionId}.json`)
.expectBadge({ label: 'coverage', message: 'build pipeline not found' })
t.create('404 latest build error response')
.get(mockBadgeUriPath)
.intercept(nock =>
nock(azureDevOpsApiBaseUri).get(mockLatestBuildApiUriPath).reply(404),
)
.expectBadge({
label: 'coverage',
message: 'build pipeline or coverage not found',
})
t.create('no build response')
.get(`${uriPrefix}/${nonExistentDefinitionId}.json`)
.intercept(nock =>
nock(azureDevOpsApiBaseUri)
.get(
`/build/builds?definitions=${nonExistentDefinitionId}&%24top=1&statusFilter=completed&api-version=5.0-preview.4`,
)
.reply(200, {
count: 0,
value: [],
}),
)
.expectBadge({ label: 'coverage', message: 'build pipeline not found' })
t.create('404 code coverage error response')
.get(mockBadgeUriPath)
.intercept(nock =>
nock(azureDevOpsApiBaseUri)
.get(mockLatestBuildApiUriPath)
.reply(200, latestBuildResponse)
.get(mockCodeCoverageApiUriPath)
.reply(404),
)
.expectBadge({
label: 'coverage',
message: 'build pipeline or coverage not found',
})
t.create('invalid code coverage response')
.get(mockBadgeUriPath)
.intercept(nock =>
nock(azureDevOpsApiBaseUri)
.get(mockLatestBuildApiUriPath)
.reply(200, latestBuildResponse)
.get(mockCodeCoverageApiUriPath)
.reply(200, {}),
)
.expectBadge({ label: 'coverage', message: 'invalid response data' })
t.create('no code coverage reports')
.get(mockBadgeUriPath)
.intercept(nock =>
nock(azureDevOpsApiBaseUri)
.get(mockLatestBuildApiUriPath)
.reply(200, latestBuildResponse)
.get(mockCodeCoverageApiUriPath)
.reply(200, { coverageData: [] }),
)
.expectBadge({ label: 'coverage', message: '0%' })
t.create('no code coverage reports')
.get(mockBadgeUriPath)
.intercept(nock =>
nock(azureDevOpsApiBaseUri)
.get(mockLatestBuildApiUriPath)
.reply(200, latestBuildResponse)
.get(mockCodeCoverageApiUriPath)
.reply(200, { coverageData: [] }),
)
.expectBadge({ label: 'coverage', message: '0%' })
t.create('no line coverage stats')
.get(mockBadgeUriPath)
.intercept(nock =>
nock(azureDevOpsApiBaseUri)
.get(mockLatestBuildApiUriPath)
.reply(200, latestBuildResponse)
.get(mockCodeCoverageApiUriPath)
.reply(200, {
coverageData: [
{
coverageStats: [branchCovStat],
},
],
}),
)
.expectBadge({ label: 'coverage', message: '0%' })
t.create('single line coverage stats')
.get(mockBadgeUriPath)
.intercept(nock =>
nock(azureDevOpsApiBaseUri)
.get(mockLatestBuildApiUriPath)
.reply(200, latestBuildResponse)
.get(mockCodeCoverageApiUriPath)
.reply(200, {
coverageData: [
{
coverageStats: [firstLinesCovStat],
},
],
}),
)
.expectBadge({ label: 'coverage', message: expCoverageSingleReport })
t.create('mixed line and branch coverage stats')
.get(mockBadgeUriPath)
.intercept(nock =>
nock(azureDevOpsApiBaseUri)
.get(mockLatestBuildApiUriPath)
.reply(200, latestBuildResponse)
.get(mockCodeCoverageApiUriPath)
.reply(200, {
coverageData: [
{
coverageStats: [firstLinesCovStat, branchCovStat],
},
],
}),
)
.expectBadge({ label: 'coverage', message: expCoverageSingleReport })
t.create('multiple line coverage stat reports')
.get(mockBadgeUriPath)
.intercept(nock =>
nock(azureDevOpsApiBaseUri)
.get(mockLatestBuildApiUriPath)
.reply(200, latestBuildResponse)
.get(mockCodeCoverageApiUriPath)
.reply(200, {
coverageData: [
{
coverageStats: [
firstLinesCovStat,
branchCovStat,
secondLinesCovStat,
],
},
],
}),
)
t.create('single JaCoCo style line coverage stats')
.get(mockBadgeUriPath)
.intercept(nock =>
nock(azureDevOpsApiBaseUri)
.get(mockLatestBuildApiUriPath)
.reply(200, latestBuildResponse)
.get(mockCodeCoverageApiUriPath)
.reply(200, {
coverageData: [
{
coverageStats: [firstLineCovStat],
},
],
}),
)
.expectBadge({ label: 'coverage', message: expCoverageSingleReport })
t.create('mixed JaCoCo style line and branch coverage stats')
.get(mockBadgeUriPath)
.intercept(nock =>
nock(azureDevOpsApiBaseUri)
.get(mockLatestBuildApiUriPath)
.reply(200, latestBuildResponse)
.get(mockCodeCoverageApiUriPath)
.reply(200, {
coverageData: [
{
coverageStats: [firstLineCovStat, branchCovStat],
},
],
}),
)
.expectBadge({ label: 'coverage', message: expCoverageSingleReport })
t.create('multiple JaCoCo style line coverage stat reports')
.get(mockBadgeUriPath)
.intercept(nock =>
nock(azureDevOpsApiBaseUri)
.get(mockLatestBuildApiUriPath)
.reply(200, latestBuildResponse)
.get(mockCodeCoverageApiUriPath)
.reply(200, {
coverageData: [
{
coverageStats: [firstLineCovStat, branchCovStat, secondLineCovStat],
},
],
}),
)
.expectBadge({ label: 'coverage', message: expCoverageMultipleReports })