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 */