[d24f17c] | 1 | const { AbortController } = require("../index.js");
|
---|
| 2 |
|
---|
| 3 | describe("AbortController", function () {
|
---|
| 4 | it("should call abort handlers once", function () {
|
---|
| 5 | const controller = new AbortController();
|
---|
| 6 | const signal = controller.signal;
|
---|
| 7 | const handler = jest.fn();
|
---|
| 8 |
|
---|
| 9 | expect(signal.onabort).toBeNull();
|
---|
| 10 | expect(signal.aborted).toBe(false);
|
---|
| 11 | expect(signal.reason).toBeUndefined();
|
---|
| 12 |
|
---|
| 13 | signal.onabort = jest.fn();
|
---|
| 14 | signal.addEventListener("abort", handler);
|
---|
| 15 |
|
---|
| 16 | controller.abort();
|
---|
| 17 |
|
---|
| 18 | expect(signal.aborted).toBe(true);
|
---|
| 19 | expect(signal.reason).toEqual(new Error("AbortError"));
|
---|
| 20 | expect(handler).toBeCalledTimes(1);
|
---|
| 21 | expect(handler).toBeCalledWith({ type: "abort", target: signal });
|
---|
| 22 | expect(signal.onabort).toBeCalledTimes(1);
|
---|
| 23 | expect(signal.onabort).toBeCalledWith({ type: "abort", target: signal });
|
---|
| 24 |
|
---|
| 25 | jest.clearAllMocks();
|
---|
| 26 | controller.abort();
|
---|
| 27 |
|
---|
| 28 | expect(signal.aborted).toBe(true);
|
---|
| 29 | expect(signal.reason).toEqual(new Error("AbortError"));
|
---|
| 30 | expect(handler).not.toBeCalled();
|
---|
| 31 | expect(signal.onabort).not.toBeCalled();
|
---|
| 32 | });
|
---|
| 33 |
|
---|
| 34 | it("should use custom abort reason", () => {
|
---|
| 35 | const controller = new AbortController();
|
---|
| 36 | const signal = controller.signal;
|
---|
| 37 | expect(signal.aborted).toBe(false);
|
---|
| 38 | expect(signal.reason).toBeUndefined();
|
---|
| 39 |
|
---|
| 40 | const customReason = new Error("Custom Reason");
|
---|
| 41 | controller.abort(customReason);
|
---|
| 42 |
|
---|
| 43 | expect(signal.aborted).toBe(true);
|
---|
| 44 | expect(signal.reason).toBe(customReason);
|
---|
| 45 | });
|
---|
| 46 | });
|
---|