/
index.test.ts
49 lines (39 loc) · 1.21 KB
/
index.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import flatry from "./index";
test("imported", () => {
expect(typeof flatry).toBe("function");
});
test("sync", () => {
const testSuccessFn = () => 1;
const testErrorFn = () => {
throw new Error("Oops...");
};
const [err1, resp1] = flatry(testSuccessFn);
const [err2, resp2] = flatry(testErrorFn);
expect(err1).toBeNull();
expect(err2).toBeDefined();
expect(resp1).toBe(1);
expect(resp2).toBeUndefined();
});
test("async", async () => {
const testSuccessFn = Promise.resolve(1);
const testErrorFn = Promise.reject(new Error("Oops..."));
const [err1, resp1] = await flatry(testSuccessFn);
const [err2, resp2] = await flatry(testErrorFn);
expect(err1).toBeNull();
expect(err2).toBeDefined();
expect(resp1).toBe(1);
expect(resp2).toBeUndefined();
});
test("thenable", async () => {
// @ts-ignore
const [err1, resp1] = await flatry({ then: cb => { cb(1); } });
const [err2, resp2] = await flatry({ then: () => { throw new Error("Oops..."); } });
expect(err1).toBeNull();
expect(err2).toBeDefined();
expect(resp1).toBe(1);
expect(resp2).toBeUndefined();
});
test("should throw exception if arg not a function", () => {
// @ts-ignore
expect(() => flatry(undefined)).toThrow();
});