Here is my db/data-source.ts:
export const dataSourceOptions: DataSourceOptions = {
type: 'postgres',
host: process.env.DATABASE_HOST,
port: parseInt(process.env.DATABASE_PORT),
username: process.env.DATABASE_USER,
password: process.env.DATABASE_PASSWORD,
database: process.env.DATABASE_NAME,
entities: ['dist/src/classes/**/**/entities/*.entity{.ts,.js}'],
migrations: ['dist/db/migrations/*{.ts,.js}'],
};
export const testDataSourceOptions: DataSourceOptions = {
type: 'postgres',
host: process.env.DATABASE_HOST,
port: parseInt(process.env.DATABASE_PORT),
username: process.env.DATABASE_USER,
password: process.env.DATABASE_PASSWORD,
database: process.env.DATABASE_NAME,
entities: ['src/classes/**/**/entities/*.entity{.ts,.js}'],
migrations: ['db/migrations/*{.ts,.js}'],
};
export const seederOptions: SeederOptions = {
seeds: [
'dist/src/database/seeds/app.seeder{.ts,.js}',
'dist/src/database/seeds/users/*{.ts,.js}'
],
factories: ['dist/src/database/factories/**/*{.ts,.js}']
};
const dataSource = new DataSource({ ...dataSourceOptions, ...seederOptions });
export default dataSource;
I use dataSourceOptions in app.module TypeOrmModule.forRoot(dataSourceOptions), I want to use testDataSourceOptions for my tests.
I actually did that :
// user.e2e-spec.ts
import { startE2ETest } from '../utils';
describe('userController (e2e)', () => {
let app: INestApplication;
beforeAll(async () => {
const { dataSource, app: newApp } = await startE2ETest();
app = newApp;
await userTestDbInit(dataSource);
})
...
})