1 | import Hashids from '../lib/hashids'
|
2 |
|
3 | const minLength = 30
|
4 | const hashids = new Hashids(
|
5 | 'this is my salt',
|
6 | minLength,
|
7 | 'xzal86grmb4jhysfoqp3we7291kuct5iv0nd',
|
8 | )
|
9 |
|
10 | describe.each([
|
11 | ['nej1m3d5a6yn875e7gr9kbwpqol02q', [0]],
|
12 | ['dw1nqdp92yrajvl9v6k3gl5mb0o8ea', [1]],
|
13 | ['onqr0bk58p642wldq14djmw21ygl39', [928728]],
|
14 | ['18apy3wlqkjvd5h1id7mn5ore2d06b', [1, 2, 3]],
|
15 | ['o60edky1ng3vl9hbfavwr5pa2q8mb9', [1, 0, 0]],
|
16 | ['o60edky1ng3vlqfbfp4wr5pa2q8mb9', [0, 0, 1]],
|
17 | ['qek2a08gpl575efrfd7yomj9dwbr63', [0, 0, 0]],
|
18 | ['m3d5a6yn875rae8y81a94gr9kbwpqo', [1000000000000]],
|
19 | ['1q3y98ln48w96kpo0wgk314w5mak2d', [9007199254740991]],
|
20 | ['op7qrcdc3cgc2c0cbcrcoc5clce4d6', [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5]],
|
21 | ['5430bd2jo0lxyfkfjfyojej5adqdy4', [10000000000, 0, 0, 0, 999999999999999]],
|
22 | [
|
23 | 'aa5kow86ano1pt3e1aqm239awkt9pk380w9l3q6',
|
24 | [9007199254740991, 9007199254740991, 9007199254740991],
|
25 | ],
|
26 | [
|
27 | 'mmmykr5nuaabgwnohmml6dakt00jmo3ainnpy2mk',
|
28 | [1000000001, 1000000002, 1000000003, 1000000004, 1000000005],
|
29 | ],
|
30 | [
|
31 | 'w1hwinuwt1cbs6xwzafmhdinuotpcosrxaz0fahl',
|
32 | [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
|
33 | ],
|
34 |
|
35 | ...(typeof BigInt === 'function'
|
36 | ? require('./bigint-test-cases').customParams
|
37 | : []),
|
38 | ] as [string, (number | bigint)[]][])(
|
39 | 'encode/decode using custom params',
|
40 | (id, numbers) => {
|
41 | test(`should encode [${numbers}] to '${id}' (passing array of numbers)`, () => {
|
42 | expect(id).toEqual(hashids.encode(numbers))
|
43 | })
|
44 |
|
45 | test(`should decode '${id}' to '${numbers.join(', ')}'`, () => {
|
46 | expect(hashids.decode(id)).toEqual(numbers)
|
47 | })
|
48 |
|
49 | test(`should encode [${numbers}] to '${id}' (passing numbers)`, () => {
|
50 | expect(id).toEqual(hashids.encode(...numbers))
|
51 | })
|
52 |
|
53 | test(`should encode [${numbers}] to '${id}' and decode back correctly`, () => {
|
54 | const encodedId = hashids.encode(numbers)
|
55 | const decodedNumbers = hashids.decode(encodedId)
|
56 |
|
57 | expect(numbers).toEqual(decodedNumbers)
|
58 | })
|
59 |
|
60 | test(`id length should be at least ${minLength}`, () => {
|
61 | expect(hashids.encode(numbers).length).toBeGreaterThanOrEqual(minLength)
|
62 | })
|
63 | },
|
64 | )
|