Son CV dans un terminal web en Javascript!
https://terminal-cv.gregandev.fr
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.1 KiB
44 lines
1.1 KiB
2 years ago
|
// @flow strict-local
|
||
|
|
||
|
import assert from 'assert';
|
||
|
import {getPublicId} from '../src/utils';
|
||
|
|
||
|
const id = '0123456789abcdef0123456789abcdef';
|
||
|
const fullPublicId = '296TIIbB3u904riPYGPJJ';
|
||
|
|
||
|
describe('getPublicId', () => {
|
||
|
it('only accepts 32-character hexadecimal strings', () => {
|
||
|
assert.throws(() => {
|
||
|
getPublicId('abc', () => false);
|
||
|
});
|
||
|
|
||
|
let notHexadecimal = 'abcdefghiklmnopqrstuvwxyz1234567';
|
||
|
assert.equal(notHexadecimal.length, 32);
|
||
|
assert.throws(() => {
|
||
|
getPublicId(notHexadecimal, () => false);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it('if no collisions, returns the first 5 base62 characters of value represented by the input', () => {
|
||
|
assert.equal(
|
||
|
getPublicId(id, () => false),
|
||
|
fullPublicId.slice(0, 5),
|
||
|
);
|
||
|
});
|
||
|
|
||
|
it('uses more characters if there is a collision', () => {
|
||
|
assert.equal(
|
||
|
getPublicId(id, publicId =>
|
||
|
[fullPublicId.slice(0, 5), fullPublicId.slice(0, 6)].includes(publicId),
|
||
|
),
|
||
|
fullPublicId.slice(0, 7),
|
||
|
);
|
||
|
});
|
||
|
|
||
|
it('fails if all characters collide', () => {
|
||
|
assert.throws(() => {
|
||
|
getPublicId(id, () => true);
|
||
|
});
|
||
|
});
|
||
|
});
|