source: node_modules/node-abort-controller/__tests__/abort-signal.js@ 65b6638

main
Last change on this file since 65b6638 was d24f17c, checked in by Aleksandar Panovski <apano77@…>, 15 months ago

Initial commit

  • Property mode set to 100644
File size: 2.3 KB
Line 
1const { AbortController, AbortSignal } = require("../index.js");
2
3describe("AbortSignal", function () {
4 it("should implement EventTarget", function () {
5 const controller = new AbortController();
6 const signal = controller.signal;
7 const unusedHandler = jest.fn();
8 const handler = jest.fn();
9 const event = { type: "abort", target: signal };
10
11 signal.onabort = jest.fn();
12 signal.addEventListener("abort", handler);
13 signal.addEventListener("abort", unusedHandler);
14 signal.removeEventListener("abort", unusedHandler);
15
16 signal.dispatchEvent("abort", event);
17
18 expect(unusedHandler).not.toBeCalled();
19 expect(handler).toBeCalledTimes(1);
20 expect(handler).toBeCalledWith(event);
21 expect(signal.onabort).toBeCalledTimes(1);
22 expect(signal.onabort).toBeCalledWith(event);
23
24 jest.clearAllMocks();
25 signal.dispatchEvent("abort", event);
26
27 expect(unusedHandler).not.toBeCalled();
28 expect(handler).toBeCalledTimes(1);
29 expect(handler).toBeCalledWith(event);
30 expect(signal.onabort).toBeCalledTimes(1);
31 expect(signal.onabort).toBeCalledWith(event);
32
33 jest.clearAllMocks();
34 signal.dispatchEvent("unknown", event);
35
36 expect(unusedHandler).not.toBeCalled();
37 expect(handler).not.toBeCalled();
38 expect(signal.onabort).not.toBeCalled();
39 });
40
41 it("should implement throwIfAborted", function () {
42 const controller = new AbortController();
43 const signal = controller.signal;
44 expect(() => signal.throwIfAborted()).not.toThrowError();
45 controller.abort();
46 expect(() => signal.throwIfAborted()).toThrowError(new Error("AbortError"));
47 });
48});
49
50describe("Static methods", () => {
51 jest.useFakeTimers();
52 jest.spyOn(global, "setTimeout");
53
54 it("should implement abort", function () {
55 const signal = AbortSignal.abort();
56 expect(signal.aborted).toBe(true);
57 expect(signal.reason).toEqual(new Error("AbortError"));
58 });
59
60 it("should implement timeout", function () {
61 const signal = AbortSignal.timeout(1000);
62 expect(setTimeout).toHaveBeenCalledTimes(1);
63 expect(setTimeout).toHaveBeenLastCalledWith(expect.any(Function), 1000);
64 expect(signal.aborted).toBe(false);
65 expect(signal.reason).toBeUndefined();
66
67 jest.runAllTimers();
68
69 expect(signal.aborted).toBe(true);
70 expect(signal.reason).toEqual(new Error("TimeoutError"));
71 });
72});
Note: See TracBrowser for help on using the repository browser.