123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- test("length is 1", () => {
- expect(Promise.all).toHaveLength(1);
- });
- describe("normal behavior", () => {
- test("returns a Promise", () => {
- const promise = Promise.all();
- expect(promise).toBeInstanceOf(Promise);
- });
- test("resolve", () => {
- const promise1 = Promise.resolve(3);
- const promise2 = 42;
- const promise3 = new Promise((resolve, reject) => {
- resolve("foo");
- });
- let resolvedValues = null;
- let wasRejected = false;
- Promise.all([promise1, promise2, promise3]).then(
- values => {
- resolvedValues = values;
- },
- () => {
- wasRejected = true;
- }
- );
- runQueuedPromiseJobs();
- expect(resolvedValues).toEqual([3, 42, "foo"]);
- expect(wasRejected).toBeFalse();
- });
- test("reject", () => {
- const promise1 = Promise.resolve(3);
- const promise2 = 42;
- const promise3 = new Promise((resolve, reject) => {
- reject("foo");
- });
- let rejectionReason = null;
- let wasResolved = false;
- Promise.all([promise1, promise2, promise3]).then(
- () => {
- wasResolved = true;
- },
- reason => {
- rejectionReason = reason;
- }
- );
- runQueuedPromiseJobs();
- expect(rejectionReason).toBe("foo");
- expect(wasResolved).toBeFalse();
- });
- });
- describe("exceptional behavior", () => {
- test("cannot invoke capabilities executor twice", () => {
- function fn() {}
- expect(() => {
- function promise(executor) {
- executor(fn, fn);
- executor(fn, fn);
- }
- Promise.all.call(promise, []);
- }).toThrow(TypeError);
- expect(() => {
- function promise(executor) {
- executor(fn, undefined);
- executor(fn, fn);
- }
- Promise.all.call(promise, []);
- }).toThrow(TypeError);
- expect(() => {
- function promise(executor) {
- executor(undefined, fn);
- executor(fn, fn);
- }
- Promise.all.call(promise, []);
- }).toThrow(TypeError);
- });
- test("promise without resolve method", () => {
- expect(() => {
- function promise(executor) {}
- Promise.all.call(promise, []);
- }).toThrow(TypeError);
- });
- test("no parameters", () => {
- let rejectionReason = null;
- Promise.all().catch(reason => {
- rejectionReason = reason;
- });
- runQueuedPromiseJobs();
- expect(rejectionReason).toBeInstanceOf(TypeError);
- });
- test("non-iterable", () => {
- let rejectionReason = null;
- Promise.all(1).catch(reason => {
- rejectionReason = reason;
- });
- runQueuedPromiseJobs();
- expect(rejectionReason).toBeInstanceOf(TypeError);
- });
- });
|