ladybird/Libraries/LibJS/Tests/builtins/Promise/Promise.resolve.js

41 lines
1.2 KiB
JavaScript

test("length is 1", () => {
expect(Promise.resolve).toHaveLength(1);
});
describe("normal behavior", () => {
test("returns a Promise", () => {
const resolvedPromise = Promise.resolve();
expect(resolvedPromise).toBeInstanceOf(Promise);
});
test("returned Promise is resolved with given argument", () => {
let fulfillmentValue = null;
Promise.resolve("Some value").then(value => {
fulfillmentValue = value;
});
runQueuedPromiseJobs();
expect(fulfillmentValue).toBe("Some value");
});
test("works with subclasses", () => {
class CustomPromise extends Promise {}
const resolvedPromise = CustomPromise.resolve("Some value");
expect(resolvedPromise).toBeInstanceOf(CustomPromise);
let fulfillmentValue = null;
resolvedPromise.then(value => {
fulfillmentValue = value;
});
runQueuedPromiseJobs();
expect(fulfillmentValue).toBe("Some value");
});
});
describe("errors", () => {
test("this value must be an object", () => {
expect(() => {
Promise.resolve.call("foo");
}).toThrowWithMessage(TypeError, "foo is not an object");
});
});