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

View File

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

View File

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