Debounce_test.res.mjs

 1// Generated by ReScript, PLEASE EDIT WITH CARE
 2
 3import * as Vitest from "vitest";
 4import * as Debounce from "../src/utils/Debounce.res.mjs";
 5
 6Vitest.describe("Debounce", () => {
 7  Vitest.test("function is called after delay when created with make", async t => {
 8    let mockFn = Vitest.vi.fn();
 9    Debounce.make(mockFn, 50);
10    t.expect(mockFn.mock.calls.length).toEqual(0);
11    await (new Promise(r => setTimeout(r, 60)));
12    t.expect(mockFn.mock.calls.length).toEqual(1);
13  });
14  Vitest.test("cancel prevents function from being called", async t => {
15    let mockFn = Vitest.vi.fn();
16    let handle = Debounce.make(mockFn, 50);
17    Debounce.cancel(handle);
18    await (new Promise(r => setTimeout(r, 60)));
19    t.expect(mockFn.mock.calls.length).toEqual(0);
20  });
21  Vitest.test("cancel is safe to call multiple times", async t => {
22    let mockFn = Vitest.vi.fn();
23    let handle = Debounce.make(mockFn, 50);
24    Debounce.cancel(handle);
25    Debounce.cancel(handle);
26    Debounce.cancel(handle);
27    await (new Promise(r => setTimeout(r, 60)));
28    t.expect(mockFn.mock.calls.length).toEqual(0);
29  });
30  Vitest.test("cancel is safe to call after function already executed", async t => {
31    let mockFn = Vitest.vi.fn();
32    let handle = Debounce.make(mockFn, 50);
33    await (new Promise(r => setTimeout(r, 60)));
34    t.expect(mockFn.mock.calls.length).toEqual(1);
35    Debounce.cancel(handle);
36    t.expect(mockFn.mock.calls.length).toEqual(1);
37  });
38  Vitest.test("creating new debounce and cancelling old one works", async t => {
39    let mockFn1 = Vitest.vi.fn();
40    let mockFn2 = Vitest.vi.fn();
41    let handle1 = Debounce.make(mockFn1, 50);
42    Debounce.cancel(handle1);
43    Debounce.make(mockFn2, 50);
44    await (new Promise(r => setTimeout(r, 60)));
45    t.expect(mockFn1.mock.calls.length).toEqual(0);
46    t.expect(mockFn2.mock.calls.length).toEqual(1);
47  });
48});
49
50/*  Not a pure module */