fix [bower] version badge (#9567)
* fix [bower] version badge * update tests
This commit is contained in:
@@ -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 })
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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')
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -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,
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user