import { describe, it, expect } from 'vitest'; import { readFileSync, existsSync } from 'fs'; import { resolve } from 'path'; describe('Environment Example Files', () => { describe('Root .env.example', () => { const rootEnvPath = resolve(__dirname, '..', '.env.example'); it('should exist and contain DATABASE_URL', () => { expect(existsSync(rootEnvPath)).toBe(true); const content = readFileSync(rootEnvPath, 'utf-8'); expect(content).toContain('DATABASE_URL'); }); it('should contain IGDB_CLIENT_ID and IGDB_CLIENT_SECRET', () => { const content = readFileSync(rootEnvPath, 'utf-8'); expect(content).toContain('IGDB_CLIENT_ID'); expect(content).toContain('IGDB_CLIENT_SECRET'); }); it('should contain RAWG_API_KEY', () => { const content = readFileSync(rootEnvPath, 'utf-8'); expect(content).toContain('RAWG_API_KEY'); }); it('should contain THEGAMESDB_API_KEY', () => { const content = readFileSync(rootEnvPath, 'utf-8'); expect(content).toContain('THEGAMESDB_API_KEY'); }); it('should contain NODE_ENV', () => { const content = readFileSync(rootEnvPath, 'utf-8'); expect(content).toContain('NODE_ENV'); }); it('should contain PORT and LOG_LEVEL', () => { const content = readFileSync(rootEnvPath, 'utf-8'); expect(content).toContain('PORT'); expect(content).toContain('LOG_LEVEL'); }); }); describe('Backend .env.example', () => { const backendEnvPath = resolve(__dirname, '..', 'backend', '.env.example'); it('should exist', () => { expect(existsSync(backendEnvPath)).toBe(true); }); it('should contain DATABASE_URL', () => { const content = readFileSync(backendEnvPath, 'utf-8'); expect(content).toContain('DATABASE_URL'); }); it('should contain all API keys', () => { const content = readFileSync(backendEnvPath, 'utf-8'); expect(content).toContain('IGDB_CLIENT_ID'); expect(content).toContain('IGDB_CLIENT_SECRET'); expect(content).toContain('RAWG_API_KEY'); expect(content).toContain('THEGAMESDB_API_KEY'); }); }); describe('Frontend .env.example', () => { const frontendEnvPath = resolve(__dirname, '..', 'frontend', '.env.example'); it('should exist', () => { expect(existsSync(frontendEnvPath)).toBe(true); }); it('should contain VITE_API_URL', () => { const content = readFileSync(frontendEnvPath, 'utf-8'); expect(content).toContain('VITE_API_URL'); }); it('should contain VITE_APP_NAME', () => { const content = readFileSync(frontendEnvPath, 'utf-8'); expect(content).toContain('VITE_APP_NAME'); }); }); describe('Git Ignore Configuration', () => { it('should ignore .env files', () => { const gitignorePath = resolve(__dirname, '..', '.gitignore'); const content = readFileSync(gitignorePath, 'utf-8'); expect(content).toContain('.env'); }); }); });