Skip to content

Commit

Permalink
DOM: tests for AbortSignal's reason
Browse files Browse the repository at this point in the history
See whatwg/dom#1027 for context.
  • Loading branch information
nidhijaju authored and Gabisampaio committed Nov 18, 2021
1 parent 9a73085 commit 56883c3
Showing 1 changed file with 62 additions and 0 deletions.
62 changes: 62 additions & 0 deletions dom/abort/event.any.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ test(t => {
let state = "begin";

assert_false(s.aborted);
assert_true("reason" in s, "signal has reason property");
assert_equals(s.reason, undefined, "signal.reason is initially undefined");

s.addEventListener("abort",
t.step_func(e => {
Expand All @@ -15,6 +17,8 @@ test(t => {

assert_equals(state, "aborted");
assert_true(s.aborted);
assert_true(s.reason instanceof DOMException, "signal.reason is DOMException");
assert_equals(s.reason.name, "AbortError", "signal.reason is AbortError");

c.abort();
}, "AbortController abort() should fire event synchronously");
Expand Down Expand Up @@ -64,4 +68,62 @@ test(t => {
controller.abort();
}, "the abort event should have the right properties");

test(t => {
const controller = new AbortController();
const signal = controller.signal;

assert_true("reason" in signal, "signal has reason property");
assert_equals(signal.reason, undefined, "signal.reason is initially undefined");

const reason = Error("hello");
controller.abort(reason);

assert_true(signal.aborted, "signal.aborted");
assert_equals(signal.reason, reason, "signal.reason");
}, "AbortController abort(reason) should set signal.reason");

test(t => {
const controller = new AbortController();
const signal = controller.signal;

assert_true("reason" in signal, "signal has reason property");
assert_equals(signal.reason, undefined, "signal.reason is initially undefined");

controller.abort();

assert_true(signal.aborted, "signal.aborted");
assert_true(signal.reason instanceof DOMException, "signal.reason is DOMException");
assert_equals(signal.reason.name, "AbortError", "signal.reason is AbortError");
}, "aborting AbortController without reason creates an \"AbortError\" DOMException");

test(t => {
const controller = new AbortController();
const signal = controller.signal;

assert_true("reason" in signal, "signal has reason property");
assert_equals(signal.reason, undefined, "signal.reason is initially undefined");

controller.abort(undefined);

assert_true(signal.aborted, "signal.aborted");
assert_true(signal.reason instanceof DOMException, "signal.reason is DOMException");
assert_equals(signal.reason.name, "AbortError", "signal.reason is AbortError");
}, "AbortController abort(undefined) creates an \"AbortError\" DOMException");

test(t => {
const signal = AbortSignal.abort();

assert_true(signal.aborted, "signal.aborted");
assert_true(signal.reason instanceof DOMException, "signal.reason is DOMException");
assert_equals(signal.reason.name, "AbortError", "signal.reason is AbortError");
}, "static aborting signal should have right properties");

test(t => {
const reason = Error("hello");
const signal = AbortSignal.abort(reason);

assert_true(signal.aborted, "signal.aborted");
assert_equals(signal.reason, reason, "signal.reason");
}, "static aborting signal with reason should set signal.reason");

done();

0 comments on commit 56883c3

Please sign in to comment.