aboutsummaryrefslogtreecommitdiff
path: root/test/bun.js/node-test-helpers.test.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/bun.js/node-test-helpers.test.js')
-rw-r--r--test/bun.js/node-test-helpers.test.js157
1 files changed, 157 insertions, 0 deletions
diff --git a/test/bun.js/node-test-helpers.test.js b/test/bun.js/node-test-helpers.test.js
new file mode 100644
index 000000000..7fb2de320
--- /dev/null
+++ b/test/bun.js/node-test-helpers.test.js
@@ -0,0 +1,157 @@
+import { describe, it, expect } from "bun:test";
+import {
+ throws,
+ assert,
+ strictEqual,
+ createCallCheckCtx,
+ createDoneDotAll,
+} from "node-test-helpers";
+
+describe("OurAssert.throws()", () => {
+ it("should pass when the function throws", () => {
+ throws(() => {
+ throw new Error("THROWN!");
+ });
+ });
+
+ it("should fail when the function doesn't throw", () => {
+ let err;
+ try {
+ throws(() => {}, Error);
+ } catch (e) {
+ err = e;
+ }
+
+ console.log(err.code);
+ expect(err instanceof Error).toBe(true);
+ });
+});
+
+describe("OurAssert.assert()", () => {
+ it("should pass when the provided value is true", () => {
+ assert(true);
+ });
+
+ it("should fail when the provided value is false", () => {
+ let err;
+ try {
+ assert(false);
+ } catch (e) {
+ err = e;
+ }
+ expect(err instanceof Error).toBe(true);
+ });
+});
+
+describe("OurAssert.strictEqual()", () => {
+ it("should pass when the provided values are deeply equal", () => {
+ strictEqual(1, 1);
+ strictEqual("hello", "hello");
+ const testing = { hello: "world" };
+ const testing2 = testing;
+ testing2.hello = "bla";
+ strictEqual(testing, testing2);
+ strictEqual(NaN, NaN);
+ strictEqual(Infinity, Infinity);
+ strictEqual(-Infinity, -Infinity);
+ strictEqual(null, null);
+ strictEqual(undefined, undefined);
+ });
+
+ it("should fail when the provided values are not deeply equal", () => {
+ let err = null;
+ try {
+ strictEqual(1, 5);
+ } catch (e) {
+ err = e;
+ }
+ expect(err instanceof Error).toBe(true);
+ err = null;
+ try {
+ strictEqual({ foo: "bar" }, { foo: "bar" });
+ } catch (e) {
+ err = e;
+ }
+ expect(err instanceof Error).toBe(true);
+ err = null;
+ try {
+ strictEqual("1", 1);
+ } catch (e) {
+ err = e;
+ }
+ expect(err instanceof Error).toBe(true);
+ err = null;
+ const obj1 = { foo: "bar" };
+ const obj2 = JSON.parse(JSON.stringify(obj1));
+ try {
+ strictEqual(obj1, obj2);
+ } catch (e) {
+ err = e;
+ }
+ expect(err instanceof Error).toBe(true);
+ });
+});
+
+describe("OurAssert.createCallCheckCtx", () => {
+ it("should pass when all mustCall marked callbacks have been called", (done) => {
+ const { mustCall } = createCallCheckCtx(done);
+ const fn1 = mustCall(() => {});
+ const fn2 = mustCall(() => {});
+ fn1();
+ fn2();
+ });
+
+ it("should fail when all mustCall marked callbacks have NOT been called", (done) => {
+ const mockDone = (result) => {
+ expect(result instanceof Error).toBe(true);
+ done();
+ };
+ const { mustCall } = createCallCheckCtx(mockDone, 600);
+ const fn1 = mustCall(() => {});
+ mustCall(() => {});
+ fn1();
+ });
+
+ it("should allow us to get the args of the wrapped callback from mustCall", (done) => {
+ const { mustCall } = createCallCheckCtx(done);
+ const fn1 = mustCall((arg1, arg2) => {
+ expect(arg1).toBe("hello");
+ expect(arg2).toBe("world");
+ });
+ fn1("hello", "world");
+ });
+});
+
+describe("OurAssert.createDoneDotAll()", () => {
+ it("should pass when all dones have been called", (done) => {
+ const createDone = createDoneDotAll(done);
+ const done1 = createDone(600);
+ const done2 = createDone(600);
+ setTimeout(() => done1(), 300);
+ setTimeout(() => done2(), 450);
+ });
+
+ it("should fail when all dones have NOT been called before timeout", (done) => {
+ const mockDone = (result) => {
+ expect(result instanceof Error).toBe(true);
+ done();
+ };
+ const createDone = createDoneDotAll(mockDone);
+ const done1 = createDone(400);
+ createDone(400);
+ setTimeout(() => done1(), 200);
+ });
+
+ it("should allow us to combine mustCall and multiple dones", (done) => {
+ const createDone = createDoneDotAll(done);
+ const { mustCall } = createCallCheckCtx(createDone(600));
+ const done1 = createDone(600);
+ const done2 = createDone(600);
+ const fn1 = mustCall(() => {});
+ const fn2 = mustCall(() => {});
+ setTimeout(() => done1(), 300);
+ setTimeout(() => done2(), 450);
+ setTimeout(() => fn1(), 200);
+ setTimeout(() => fn2(), 200);
+ });
+});