import { Model } from 'objection'; import { client as knex } from '../../src/config/database.js'; import logger from '../../src/helpers/logger.js'; import { vi } from 'vitest'; import './insert-assertions.js'; global.beforeAll(async () => { global.knex = null; logger.silent = true; // Remove default roles and permissions before running the test suite await knex.raw('TRUNCATE TABLE config CASCADE'); await knex.raw('TRUNCATE TABLE roles CASCADE'); await knex.raw('TRUNCATE TABLE permissions CASCADE'); }); global.beforeEach(async () => { // It's assigned as global.knex for the convenience even though // it's a transaction. It's rolled back after each test. // by assigning to knex, we can use it as knex.table('example') in tests files. global.knex = await knex.transaction(); Model.knex(global.knex); }); global.afterEach(async () => { await global.knex.rollback(); Model.knex(knex); vi.restoreAllMocks(); vi.clearAllMocks(); }); global.afterAll(async () => { logger.silent = false; });