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.
 
 
 
 

43 lines
1.1 KiB

// @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);
});
});
});