mirror of
https://github.com/oven-sh/bun
synced 2026-02-11 11:29:02 +00:00
47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
import { peek } from "bun";
|
|
import { expect, test } from "bun:test";
|
|
|
|
test("peek", () => {
|
|
const promise = Promise.resolve(true);
|
|
|
|
// no await necessary!
|
|
expect(peek(promise)).toBe(true);
|
|
|
|
// if we peek again, it returns the same value
|
|
const again = peek(promise);
|
|
expect(again).toBe(true);
|
|
|
|
// if we peek a non-promise, it returns the value
|
|
const value = peek(42);
|
|
expect(value).toBe(42);
|
|
|
|
// if we peek a pending promise, it returns the promise again
|
|
const pending = new Promise(() => {});
|
|
expect(peek(pending)).toBe(pending);
|
|
|
|
// If we peek a rejected promise, it:
|
|
// - returns the error
|
|
// - does not mark the promise as handled
|
|
const rejected = Promise.reject<Error>(
|
|
new Error("Succesfully tested promise rejection"),
|
|
);
|
|
const peeked = peek(rejected);
|
|
expect(peeked instanceof Error).toBe(true);
|
|
expect((peeked as Error).message).toBe(
|
|
"Succesfully tested promise rejection",
|
|
);
|
|
rejected.catch(() => {});
|
|
});
|
|
|
|
test("peek.status", () => {
|
|
const promise = Promise.resolve(true);
|
|
expect(peek.status(promise)).toBe("fulfilled");
|
|
|
|
const pending = new Promise(() => {});
|
|
expect(peek.status(pending)).toBe("pending");
|
|
|
|
const rejected = Promise.reject(new Error("oh nooo"));
|
|
expect(peek.status(rejected)).toBe("rejected");
|
|
rejected.catch(() => {});
|
|
});
|