fix [bower] version badge (#9567)

* fix [bower] version badge

* update tests
This commit is contained in:
chris48s
2023-09-12 00:08:01 +01:00
committed by GitHub
parent e8b4467609
commit f545553945
3 changed files with 11 additions and 45 deletions

View File

@@ -1,15 +1,10 @@
import Joi from 'joi'
import { renderVersionBadge } from '../version.js'
import { InvalidResponse } from '../index.js'
import BaseBowerService from './bower-base.js'
const queryParamSchema = Joi.object({
include_prereleases: Joi.equal(''),
}).required()
export default class BowerVersion extends BaseBowerService {
static category = 'version'
static route = { base: 'bower/v', pattern: ':packageName', queryParamSchema }
static route = { base: 'bower/v', pattern: ':packageName' }
static examples = [
{
@@ -17,20 +12,12 @@ export default class BowerVersion extends BaseBowerService {
namedParams: { packageName: 'bootstrap' },
staticPreview: renderVersionBadge({ version: '4.2.1' }),
},
{
title: 'Bower Version (including pre-releases)',
namedParams: { packageName: 'bootstrap' },
queryParams: { include_prereleases: null },
staticPreview: renderVersionBadge({ version: '4.2.1' }),
},
]
static defaultBadgeData = { label: 'bower' }
static transform(data, includePrereleases) {
const version = includePrereleases
? data.latest_release_number
: data.latest_stable_release_number
static transform(data) {
const version = data.latest_release_number
if (!version) {
throw new InvalidResponse({ prettyMessage: 'no releases' })
@@ -39,10 +26,9 @@ export default class BowerVersion extends BaseBowerService {
return version
}
async handle({ packageName }, queryParams) {
async handle({ packageName }) {
const data = await this.fetch({ packageName })
const includePrereleases = queryParams.include_prereleases !== undefined
const version = this.constructor.transform(data, includePrereleases)
const version = this.constructor.transform(data)
return renderVersionBadge({ version })
}

View File

@@ -8,34 +8,14 @@ import BowerVersion from './bower-version.service.js'
describe('BowerVersion', function () {
test(BowerVersion.transform, () => {
given(
{
latest_release_number: '2.0.0-beta',
latest_stable_release_number: '1.8.3',
},
false,
).expect('1.8.3')
given(
{
latest_release_number: '2.0.0-beta',
latest_stable_release_number: '1.8.3',
},
true,
).expect('2.0.0-beta')
given({
latest_release_number: '2.0.0-beta',
latest_stable_release_number: '1.8.3',
}).expect('2.0.0-beta')
})
it('throws `no releases` InvalidResponse if no stable version', function () {
expect(() =>
BowerVersion.transform({ latest_release_number: 'panda' }, false),
)
.to.throw(InvalidResponse)
.with.property('prettyMessage', 'no releases')
})
it('throws `no releases` InvalidResponse if no prereleases', function () {
expect(() =>
BowerVersion.transform({ latest_stable_release_number: 'penguin' }, true),
)
expect(() => BowerVersion.transform({}))
.to.throw(InvalidResponse)
.with.property('prettyMessage', 'no releases')
})

View File

@@ -9,7 +9,7 @@ export const t = new ServiceTester({
pathPrefix: '/bower',
})
t.create('version').timeout(10000).get('/v/angular.json').expectBadge({
t.create('version').timeout(10000).get('/v/backbone.json').expectBadge({
label: 'bower',
message: isVPlusDottedVersionAtLeastOne,
})