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})