greglebreton 4e8a693745
Some checks failed
continuous-integration/drone/push Build is failing
add garagenum exp + maj url site projets
2023-01-08 16:50:31 +01:00

44 lines
1.1 KiB
JavaScript

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