aboutsummaryrefslogtreecommitdiff
path: root/test/bun.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/bun.js')
-rw-r--r--test/bun.js/peek.test.ts40
1 files changed, 40 insertions, 0 deletions
diff --git a/test/bun.js/peek.test.ts b/test/bun.js/peek.test.ts
new file mode 100644
index 000000000..3b2237291
--- /dev/null
+++ b/test/bun.js/peek.test.ts
@@ -0,0 +1,40 @@
+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(
+ new Error("Succesfully tested promise rejection")
+ );
+ expect(peek(rejected).message).toBe("Succesfully tested promise rejection");
+});
+
+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");
+});