add tests
This commit is contained in:
89
apps/api/src/domain/database/DatabaseModule.test.ts
Normal file
89
apps/api/src/domain/database/DatabaseModule.test.ts
Normal file
@@ -0,0 +1,89 @@
|
||||
import { Test, TestingModule } from '@nestjs/testing';
|
||||
import { DatabaseModule } from './DatabaseModule';
|
||||
|
||||
describe('DatabaseModule', () => {
|
||||
let module: TestingModule;
|
||||
|
||||
beforeEach(async () => {
|
||||
// Clear environment variables to ensure consistent test behavior
|
||||
delete process.env.DATABASE_URL;
|
||||
delete process.env.DATABASE_HOST;
|
||||
delete process.env.DATABASE_PORT;
|
||||
delete process.env.DATABASE_USER;
|
||||
delete process.env.DATABASE_PASSWORD;
|
||||
delete process.env.DATABASE_NAME;
|
||||
delete process.env.NODE_ENV;
|
||||
|
||||
module = await Test.createTestingModule({
|
||||
imports: [DatabaseModule],
|
||||
}).compile();
|
||||
});
|
||||
|
||||
it('should compile the module', () => {
|
||||
expect(module).toBeDefined();
|
||||
});
|
||||
|
||||
it('should configure TypeORM with DATABASE_URL when provided', async () => {
|
||||
process.env.DATABASE_URL = 'postgres://user:pass@localhost:5432/testdb';
|
||||
process.env.NODE_ENV = 'production';
|
||||
|
||||
const testModule = await Test.createTestingModule({
|
||||
imports: [DatabaseModule],
|
||||
}).compile();
|
||||
|
||||
expect(testModule).toBeDefined();
|
||||
});
|
||||
|
||||
it('should configure TypeORM with individual connection parameters when DATABASE_URL is not provided', async () => {
|
||||
process.env.DATABASE_HOST = 'localhost';
|
||||
process.env.DATABASE_PORT = '5432';
|
||||
process.env.DATABASE_USER = 'testuser';
|
||||
process.env.DATABASE_PASSWORD = 'testpass';
|
||||
process.env.DATABASE_NAME = 'testdb';
|
||||
process.env.NODE_ENV = 'development';
|
||||
|
||||
const testModule = await Test.createTestingModule({
|
||||
imports: [DatabaseModule],
|
||||
}).compile();
|
||||
|
||||
expect(testModule).toBeDefined();
|
||||
});
|
||||
|
||||
it('should use default values when connection parameters are not provided', async () => {
|
||||
process.env.NODE_ENV = 'test';
|
||||
|
||||
const testModule = await Test.createTestingModule({
|
||||
imports: [DatabaseModule],
|
||||
}).compile();
|
||||
|
||||
expect(testModule).toBeDefined();
|
||||
});
|
||||
|
||||
it('should enable synchronization in non-production environments', async () => {
|
||||
process.env.NODE_ENV = 'development';
|
||||
|
||||
const testModule = await Test.createTestingModule({
|
||||
imports: [DatabaseModule],
|
||||
}).compile();
|
||||
|
||||
expect(testModule).toBeDefined();
|
||||
});
|
||||
|
||||
it('should disable synchronization in production environment', async () => {
|
||||
process.env.NODE_ENV = 'production';
|
||||
|
||||
const testModule = await Test.createTestingModule({
|
||||
imports: [DatabaseModule],
|
||||
}).compile();
|
||||
|
||||
expect(testModule).toBeDefined();
|
||||
});
|
||||
|
||||
it('should auto load entities', async () => {
|
||||
const testModule = await Test.createTestingModule({
|
||||
imports: [DatabaseModule],
|
||||
}).compile();
|
||||
|
||||
expect(testModule).toBeDefined();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user