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

37 lines
1.1 KiB
JavaScript

test("length is 1", () => {
expect(Promise).toHaveLength(1);
});
describe("errors", () => {
test("must be called as constructor", () => {
expect(() => {
Promise();
}).toThrowWithMessage(TypeError, "Promise constructor must be called with 'new'");
});
test("executor must be a function", () => {
expect(() => {
new Promise();
}).toThrowWithMessage(TypeError, "Promise executor must be a function");
});
});
describe("normal behavior", () => {
test("returns a Promise object", () => {
const promise = new Promise(() => {});
expect(promise).toBeInstanceOf(Promise);
expect(typeof promise).toBe("object");
});
test("executor is called with resolve and reject functions", () => {
let resolveFunction = null;
let rejectFunction = null;
new Promise((resolve, reject) => {
resolveFunction = resolve;
rejectFunction = reject;
});
expect(typeof resolveFunction).toBe("function");
expect(typeof rejectFunction).toBe("function");
expect(resolveFunction).not.toBe(rejectFunction);
});
});