Files
shields/core/base-service/examples.spec.js
chris48s 13d75e0607 upgrade to prettier 2 (#5051)
* arrowParens: avoid
* remove trailingComma setting
2020-05-05 21:07:43 +01:00

170 lines
4.3 KiB
JavaScript

'use strict'
const { expect } = require('chai')
const { test, given } = require('sazerac')
const { validateExample, transformExample } = require('./examples')
describe('validateExample function', function () {
it('passes valid examples', function () {
const validExamples = [
{
title: 'Package manager versioning badge',
staticPreview: { message: '123' },
pattern: 'dt/:package',
namedParams: { package: 'mypackage' },
keywords: ['semver', 'management'],
},
]
validExamples.forEach(example => {
expect(() =>
validateExample(example, 0, { route: {}, name: 'mockService' })
).not.to.throw(Error)
})
})
it('rejects invalid examples', function () {
const invalidExamples = [
{},
{ staticPreview: { message: '123' } },
{
staticPreview: { message: '123' },
pattern: 'dt/:package',
namedParams: { package: 'mypackage' },
exampleUrl: 'dt/mypackage',
},
{ staticPreview: { message: '123' }, pattern: 'dt/:package' },
{
staticPreview: { message: '123' },
pattern: 'dt/:package',
previewUrl: 'dt/mypackage',
},
{
staticPreview: { message: '123' },
pattern: 'dt/:package',
exampleUrl: 'dt/mypackage',
},
{ previewUrl: 'dt/mypackage' },
{
staticPreview: { message: '123' },
pattern: 'dt/:package',
namedParams: { package: 'mypackage' },
keywords: ['a'], // Keyword too short.
},
{
staticPreview: { message: '123' },
pattern: 'dt/:package',
namedParams: { package: 'mypackage' },
keywords: ['mockService'], // No title and keyword matching the class name.
},
{
title: 'Package manager versioning badge',
staticPreview: { message: '123' },
pattern: 'dt/:package',
namedParams: { package: 'mypackage' },
keywords: ['version'], // Keyword included in title.
},
]
invalidExamples.forEach(example => {
expect(() =>
validateExample(example, 0, { route: {}, name: 'mockService' })
).to.throw(Error)
})
})
})
test(transformExample, function () {
const ExampleService = {
name: 'ExampleService',
route: {
base: 'some-service',
pattern: ':interval/:packageName',
},
defaultBadgeData: {
label: 'downloads',
},
category: 'platform-support',
}
given(
{
pattern: 'dt/:packageName',
namedParams: { packageName: 'express' },
staticPreview: { message: '50k' },
keywords: ['hello'],
},
0,
ExampleService
).expect({
title: 'ExampleService',
example: {
pattern: '/some-service/dt/:packageName',
namedParams: { packageName: 'express' },
queryParams: {},
},
preview: {
label: 'downloads',
message: '50k',
color: 'lightgrey',
namedLogo: undefined,
style: undefined,
},
keywords: ['hello', 'platform'],
documentation: undefined,
})
given(
{
namedParams: { interval: 'dt', packageName: 'express' },
staticPreview: { message: '50k' },
keywords: ['hello'],
},
0,
ExampleService
).expect({
title: 'ExampleService',
example: {
pattern: '/some-service/:interval/:packageName',
namedParams: { interval: 'dt', packageName: 'express' },
queryParams: {},
},
preview: {
label: 'downloads',
message: '50k',
color: 'lightgrey',
namedLogo: undefined,
style: undefined,
},
keywords: ['hello', 'platform'],
documentation: undefined,
})
given(
{
namedParams: { interval: 'dt', packageName: 'express' },
queryParams: { registry_url: 'http://example.com/' },
staticPreview: { message: '50k' },
keywords: ['hello'],
},
0,
ExampleService
).expect({
title: 'ExampleService',
example: {
pattern: '/some-service/:interval/:packageName',
namedParams: { interval: 'dt', packageName: 'express' },
queryParams: { registry_url: 'http://example.com/' },
},
preview: {
label: 'downloads',
message: '50k',
color: 'lightgrey',
namedLogo: undefined,
style: undefined,
},
keywords: ['hello', 'platform'],
documentation: undefined,
})
})