Merge pull request #1312 from automatisch/global-test-hooks
feat: Add global hooks for jest
This commit is contained in:
@@ -2,4 +2,6 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
preset: 'ts-jest',
|
preset: 'ts-jest',
|
||||||
testEnvironment: 'node',
|
testEnvironment: 'node',
|
||||||
};
|
setupFilesAfterEnv: ['./test/setup/global-hooks.ts'],
|
||||||
|
globalTeardown: './test/setup/global-teardown.ts',
|
||||||
|
};
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
import appConfig from './src/config/app';
|
import appConfig from './src/config/app';
|
||||||
|
|
||||||
const fileExtension = appConfig.isDev ? 'ts' : 'js';
|
const fileExtension = appConfig.isDev || appConfig.isTest ? 'ts' : 'js';
|
||||||
|
|
||||||
const knexConfig = {
|
const knexConfig = {
|
||||||
client: 'pg',
|
client: 'pg',
|
||||||
|
@@ -17,6 +17,7 @@ type AppConfig = {
|
|||||||
appEnv: string;
|
appEnv: string;
|
||||||
logLevel: string;
|
logLevel: string;
|
||||||
isDev: boolean;
|
isDev: boolean;
|
||||||
|
isTest: boolean;
|
||||||
isProd: boolean;
|
isProd: boolean;
|
||||||
postgresDatabase: string;
|
postgresDatabase: string;
|
||||||
postgresSchema: string;
|
postgresSchema: string;
|
||||||
@@ -89,6 +90,7 @@ const appConfig: AppConfig = {
|
|||||||
appEnv: appEnv,
|
appEnv: appEnv,
|
||||||
logLevel: process.env.LOG_LEVEL || 'info',
|
logLevel: process.env.LOG_LEVEL || 'info',
|
||||||
isDev: appEnv === 'development',
|
isDev: appEnv === 'development',
|
||||||
|
isTest: appEnv === 'test',
|
||||||
isProd: appEnv === 'production',
|
isProd: appEnv === 'production',
|
||||||
version: process.env.npm_package_version,
|
version: process.env.npm_package_version,
|
||||||
postgresDatabase: process.env.POSTGRES_DATABASE || 'automatisch_development',
|
postgresDatabase: process.env.POSTGRES_DATABASE || 'automatisch_development',
|
||||||
|
8
packages/backend/src/types/global.d.ts
vendored
Normal file
8
packages/backend/src/types/global.d.ts
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
import { Knex } from 'knex';
|
||||||
|
|
||||||
|
declare global {
|
||||||
|
declare namespace globalThis {
|
||||||
|
// eslint-disable-next-line no-var
|
||||||
|
var knex: Knex;
|
||||||
|
}
|
||||||
|
}
|
@@ -1,11 +0,0 @@
|
|||||||
import { createDatabaseAndUser } from '../../bin/database/utils';
|
|
||||||
import logger from '../../src/helpers/logger';
|
|
||||||
|
|
||||||
createDatabaseAndUser()
|
|
||||||
.then(() => {
|
|
||||||
process.exit(0);
|
|
||||||
})
|
|
||||||
.catch((error) => {
|
|
||||||
logger.error(error);
|
|
||||||
process.exit(1);
|
|
||||||
});
|
|
17
packages/backend/test/setup/global-hooks.ts
Normal file
17
packages/backend/test/setup/global-hooks.ts
Normal file
@@ -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();
|
||||||
|
});
|
5
packages/backend/test/setup/global-teardown.ts
Normal file
5
packages/backend/test/setup/global-teardown.ts
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
const exitProcess = (): void => {
|
||||||
|
process.exit(0);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default exitProcess;
|
@@ -1,2 +1,22 @@
|
|||||||
import './check-env-file';
|
import './check-env-file';
|
||||||
import './create-database';
|
import { createDatabaseAndUser } from '../../bin/database/utils';
|
||||||
|
import { client as knex } from '../../src/config/database';
|
||||||
|
import logger from '../../src/helpers/logger';
|
||||||
|
|
||||||
|
const createAndMigrateDatabase = async () => {
|
||||||
|
await createDatabaseAndUser();
|
||||||
|
const migrator = knex.migrate;
|
||||||
|
|
||||||
|
await migrator.latest();
|
||||||
|
|
||||||
|
logger.info(`Completed database migrations for the test database.`);
|
||||||
|
};
|
||||||
|
|
||||||
|
createAndMigrateDatabase()
|
||||||
|
.then(() => {
|
||||||
|
process.exit(0);
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
logger.error(error);
|
||||||
|
process.exit(1);
|
||||||
|
});
|
||||||
|
Reference in New Issue
Block a user