NanoID_test.res

 1open VitestHelpers
 2
 3describe("NanoID", () => {
 4  testAsync("make returns string of default length 10", async t => {
 5    let id = NanoID.make()
 6    t->expect(String.length(id))->toEqual(10)
 7  })
 8
 9  testAsync("make returns unique IDs on multiple calls", async t => {
10    let id1 = NanoID.make()
11    let id2 = NanoID.make()
12    t->expect(id1 == id2)->toEqual(false)
13  })
14
15  testAsync("make returns URL-safe characters only", async t => {
16    let id = NanoID.make()
17    // Nanoid uses A-Za-z0-9_- (URL-safe characters)
18    let isUrlSafe = RegExp.test(%re("/^[A-Za-z0-9_-]+$/"), id)
19    t->expect(isUrlSafe)->toEqual(true)
20  })
21
22  testAsync("makeLen returns string of specified length 5", async t => {
23    let id = NanoID.makeLen(5)
24    t->expect(String.length(id))->toEqual(5)
25  })
26
27  testAsync("makeLen returns string of specified length 21", async t => {
28    let id = NanoID.makeLen(21)
29    t->expect(String.length(id))->toEqual(21)
30  })
31
32  testAsync("makeLen returns string of specified length 1", async t => {
33    let id = NanoID.makeLen(1)
34    t->expect(String.length(id))->toEqual(1)
35  })
36
37  testAsync("makeLen returns unique IDs on multiple calls", async t => {
38    let id1 = NanoID.makeLen(10)
39    let id2 = NanoID.makeLen(10)
40    t->expect(id1 == id2)->toEqual(false)
41  })
42
43  testAsync("makeLen returns URL-safe characters only", async t => {
44    let id = NanoID.makeLen(15)
45    let isUrlSafe = RegExp.test(%re("/^[A-Za-z0-9_-]+$/"), id)
46    t->expect(isUrlSafe)->toEqual(true)
47  })
48})