aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorGravatar Alex Lam S.L <alexlamsl@gmail.com> 2022-12-31 13:14:23 +0200
committerGravatar GitHub <noreply@github.com> 2022-12-31 03:14:23 -0800
commit9b3db963081d5556a9fca41e5baa2670cc5cba49 (patch)
treeee2ed7c96e971ed456f7dad6dcb4abf6a7673fc8 /test
parentb86915c80819e61e6e1932d7802a4c31c73094e9 (diff)
downloadbun-9b3db963081d5556a9fca41e5baa2670cc5cba49.tar.gz
bun-9b3db963081d5556a9fca41e5baa2670cc5cba49.tar.zst
bun-9b3db963081d5556a9fca41e5baa2670cc5cba49.zip
[jest] fix and improve hooks (#1689)
- wait for async hooks to complete before running tests - add support for `done(err)` callbacks in hooks fixes #1688
Diffstat (limited to 'test')
-rw-r--r--test/bun.js/bun-test/jest-hooks.test.ts127
1 files changed, 127 insertions, 0 deletions
diff --git a/test/bun.js/bun-test/jest-hooks.test.ts b/test/bun.js/bun-test/jest-hooks.test.ts
index a75025041..4675acb07 100644
--- a/test/bun.js/bun-test/jest-hooks.test.ts
+++ b/test/bun.js/bun-test/jest-hooks.test.ts
@@ -73,4 +73,131 @@ describe("test jest hooks in bun-test", () => {
expect(animal).toEqual("lion");
});
});
+
+ describe("test async hooks", async () => {
+ let beforeAllCalled = 0;
+ let beforeEachCalled = 0;
+ let afterAllCalled = 0;
+ let afterEachCalled = 0;
+
+ beforeAll(async () => {
+ beforeAllCalled += await 1;
+ });
+
+ beforeEach(async () => {
+ beforeEachCalled += await 1;
+ });
+
+ afterAll(async () => {
+ afterAllCalled += await 1;
+ });
+
+ afterEach(async () => {
+ afterEachCalled += await 1;
+ });
+
+ it("should run after beforeAll()", () => {
+ expect(beforeAllCalled).toBe(1);
+ expect(beforeEachCalled).toBe(1);
+ expect(afterAllCalled).toBe(0);
+ expect(afterEachCalled).toBe(0);
+ });
+
+ it("should run after beforeEach()", () => {
+ expect(beforeAllCalled).toBe(1);
+ expect(beforeEachCalled).toBe(2);
+ expect(afterAllCalled).toBe(0);
+ expect(afterEachCalled).toBe(1);
+ });
+ });
+
+ describe("test done callback in hooks", () => {
+ let beforeAllCalled = 0;
+ let beforeEachCalled = 0;
+ let afterAllCalled = 0;
+ let afterEachCalled = 0;
+
+ beforeAll(done => {
+ setImmediate(() => {
+ beforeAllCalled++;
+ done();
+ });
+ });
+
+ beforeEach(done => {
+ setImmediate(() => {
+ beforeEachCalled++;
+ done();
+ });
+ });
+
+ afterAll(done => {
+ setImmediate(() => {
+ afterAllCalled++;
+ done();
+ });
+ });
+
+ afterEach(done => {
+ setImmediate(() => {
+ afterEachCalled++;
+ done();
+ });
+ });
+
+ it("should run after beforeAll()", () => {
+ expect(beforeAllCalled).toBe(1);
+ expect(beforeEachCalled).toBe(1);
+ expect(afterAllCalled).toBe(0);
+ expect(afterEachCalled).toBe(0);
+ });
+
+ it("should run after beforeEach()", () => {
+ expect(beforeAllCalled).toBe(1);
+ expect(beforeEachCalled).toBe(2);
+ expect(afterAllCalled).toBe(0);
+ expect(afterEachCalled).toBe(1);
+ });
+ });
+
+ describe("test async hooks with done()", () => {
+ let beforeAllCalled = 0;
+ let beforeEachCalled = 0;
+ let afterAllCalled = 0;
+ let afterEachCalled = 0;
+
+ beforeAll(async done => {
+ beforeAllCalled += await 1;
+ setTimeout(done, 1);
+ });
+
+ beforeEach(async done => {
+ beforeEachCalled += await 1;
+ setTimeout(done, 1);
+ });
+
+ afterAll(async done => {
+ afterAllCalled += await 1;
+ setTimeout(done, 1);
+ });
+
+ afterEach(async done => {
+ afterEachCalled += await 1;
+ setTimeout(done, 1);
+ });
+
+ it("should run after beforeAll()", () => {
+ expect(beforeAllCalled).toBe(1);
+ expect(beforeEachCalled).toBe(1);
+ expect(afterAllCalled).toBe(0);
+ expect(afterEachCalled).toBe(0);
+ });
+
+ it("should run after beforeEach()", () => {
+ expect(beforeAllCalled).toBe(1);
+ expect(beforeEachCalled).toBe(2);
+ expect(afterAllCalled).toBe(0);
+ expect(afterEachCalled).toBe(1);
+ });
+ });
});