diff --git a/packages/backend/jest.config.js b/packages/backend/jest.config.js index b413e106..0b261606 100644 --- a/packages/backend/jest.config.js +++ b/packages/backend/jest.config.js @@ -2,4 +2,6 @@ module.exports = { preset: 'ts-jest', testEnvironment: 'node', -}; \ No newline at end of file + setupFilesAfterEnv: ['./test/setup/global-hooks.ts'], + globalTeardown: './test/setup/global-teardown.ts', +}; diff --git a/packages/backend/test/setup/global-hooks.ts b/packages/backend/test/setup/global-hooks.ts new file mode 100644 index 00000000..be1c2704 --- /dev/null +++ b/packages/backend/test/setup/global-hooks.ts @@ -0,0 +1,17 @@ +import { client as knex } from '../../src/config/database'; + +global.beforeAll(async () => { + global.knex = knex; +}); + +global.beforeEach(async function () { + this.transaction = await global.knex.transaction(); +}); + +global.afterEach(async function () { + await this.transaction.rollback(); +}); + +global.afterAll(async () => { + global.knex.destroy(); +}); diff --git a/packages/backend/test/setup/global-teardown.ts b/packages/backend/test/setup/global-teardown.ts new file mode 100644 index 00000000..0484a1a3 --- /dev/null +++ b/packages/backend/test/setup/global-teardown.ts @@ -0,0 +1,5 @@ +const exitProcess = (): void => { + process.exit(0); +}; + +export default exitProcess;