I went down a rabbit hole while trying to untangle the bug in the dockbit and bitrise examples https://github.com/badges/shields/pull/2234#pullrequestreview-169997546. The URL generation code is spaghetti-like, with functions, many of which I wrote, with opaque names, doing similar but not identical things, and making slightly incompatible assumptions about the way query strings are handled. I got a bit lost and need to take a step back. Meanwhile, this is a small piece of work I did that’s worth keeping. It doesn’t scratch the surface of the tangle, but it does remove a bit of duplication. It also makes a minor stylistic ES6 change in the handling of default arguments. Ref: #2027
43 lines
1.1 KiB
JavaScript
43 lines
1.1 KiB
JavaScript
'use strict'
|
|
|
|
const { test, given } = require('sazerac')
|
|
const { encodeField, staticBadgeUrl } = require('./make-badge-url')
|
|
|
|
describe('Badge URL generation functions', function() {
|
|
test(encodeField, () => {
|
|
given('foo').expect('foo')
|
|
given('').expect('')
|
|
given('happy go lucky').expect('happy%20go%20lucky')
|
|
given('do-right').expect('do--right')
|
|
given('it_is_a_snake').expect('it__is__a__snake')
|
|
})
|
|
|
|
test(staticBadgeUrl, () => {
|
|
given({
|
|
label: 'foo',
|
|
message: 'bar',
|
|
color: 'blue',
|
|
style: 'flat-square',
|
|
}).expect('/badge/foo-bar-blue.svg?style=flat-square')
|
|
given({
|
|
label: 'foo',
|
|
message: 'bar',
|
|
color: 'blue',
|
|
style: 'flat-square',
|
|
format: 'png',
|
|
}).expect('/badge/foo-bar-blue.png?style=flat-square')
|
|
given({
|
|
label: 'Hello World',
|
|
message: 'Привет Мир',
|
|
color: '#aabbcc',
|
|
}).expect(
|
|
'/badge/Hello%20World-%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82%20%D0%9C%D0%B8%D1%80-%23aabbcc.svg'
|
|
)
|
|
given({
|
|
label: '123-123',
|
|
message: 'abc-abc',
|
|
color: 'blue',
|
|
}).expect('/badge/123--123-abc--abc-blue.svg')
|
|
})
|
|
})
|