diff options
author | 2022-12-31 13:14:23 +0200 | |
---|---|---|
committer | 2022-12-31 03:14:23 -0800 | |
commit | 9b3db963081d5556a9fca41e5baa2670cc5cba49 (patch) | |
tree | ee2ed7c96e971ed456f7dad6dcb4abf6a7673fc8 /test | |
parent | b86915c80819e61e6e1932d7802a4c31c73094e9 (diff) | |
download | bun-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.ts | 127 |
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); + }); + }); }); |