| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- import { describe, it, expect, beforeEach, afterEach } from 'vitest';
- import { createDataSource, initializeDataSource } from '../../src/data-source';
- // 模拟实体类
- class MockEntity {}
- describe('data-source', () => {
- const originalEnv = process.env;
- beforeEach(() => {
- // 重置环境变量
- process.env = { ...originalEnv };
- });
- afterEach(() => {
- process.env = originalEnv;
- });
- describe('createDataSource', () => {
- it('应该创建生产环境数据源', () => {
- process.env.NODE_ENV = 'production';
- const dataSource = createDataSource([MockEntity]);
- expect(dataSource).toBeDefined();
- expect(dataSource.options.type).toBe('postgres');
- expect(dataSource.options.entities).toEqual([MockEntity]);
- expect(dataSource.options.synchronize).toBe(true); // 默认值
- });
- it('应该创建测试环境数据源', () => {
- process.env.NODE_ENV = 'test';
- process.env.TEST_DATABASE_URL = 'postgresql://test:test@localhost:5432/test';
- const dataSource = createDataSource([MockEntity]);
- expect(dataSource).toBeDefined();
- expect(dataSource.options.type).toBe('postgres');
- expect(dataSource.options.url).toBe('postgresql://test:test@localhost:5432/test');
- expect(dataSource.options.synchronize).toBe(true);
- expect(dataSource.options.dropSchema).toBe(true);
- expect(dataSource.options.logging).toBe(false);
- });
- it('应该使用环境变量配置', () => {
- process.env.NODE_ENV = 'production';
- // 确保没有设置 TEST_DATABASE_URL,这样会使用生产环境配置
- delete process.env.TEST_DATABASE_URL;
- process.env.DB_HOST = 'custom-host';
- process.env.DB_PORT = '5433';
- process.env.DB_USERNAME = 'custom-user';
- process.env.DB_PASSWORD = 'custom-password';
- process.env.DB_DATABASE = 'custom-db';
- process.env.DB_SYNCHRONIZE = 'false';
- process.env.DB_LOGGING = 'true';
- const dataSource = createDataSource([MockEntity]);
- expect(dataSource.options).toMatchObject({
- host: 'custom-host',
- port: 5433,
- username: 'custom-user',
- password: 'custom-password',
- database: 'custom-db',
- synchronize: false,
- logging: true
- });
- });
- it('应该使用默认值当环境变量未设置时', () => {
- process.env.NODE_ENV = 'production';
- // 确保没有设置 TEST_DATABASE_URL,这样会使用生产环境配置
- delete process.env.TEST_DATABASE_URL;
- delete process.env.DB_HOST;
- delete process.env.DB_PORT;
- delete process.env.DB_USERNAME;
- delete process.env.DB_PASSWORD;
- delete process.env.DB_DATABASE;
- delete process.env.DB_SYNCHRONIZE;
- delete process.env.DB_LOGGING;
- const dataSource = createDataSource([MockEntity]);
- expect(dataSource.options).toMatchObject({
- host: 'localhost',
- port: 5432,
- username: 'postgres',
- password: '',
- database: 'postgres',
- synchronize: true,
- logging: false
- });
- });
- });
- describe('initializeDataSource', () => {
- it('应该初始化默认数据源', () => {
- process.env.NODE_ENV = 'production';
- initializeDataSource([MockEntity]);
- // 导入 AppDataSource 来验证它被正确设置
- import('../../src/data-source').then(({ AppDataSource }) => {
- expect(AppDataSource).toBeDefined();
- expect(AppDataSource.options.entities).toEqual([MockEntity]);
- });
- });
- });
- });
|