const { test } = require('node:test'); const assert = require('node:assert/strict'); const { parseConfig } = require('./config'); test('valores padrao quando env vazio', () => { const config = parseConfig({}); assert.equal(config.aiEnabled, true); assert.equal(config.aiProvider, 'openai'); assert.equal(config.candidatePoolSize, 60); assert.equal(config.aiMaxCandidates, 60); assert.equal(config.topN, 10); assert.equal(config.aiConfidenceThreshold, 0.6); assert.equal(config.shadowMode, true); assert.equal(config.devMode, true); assert.equal(config.environment, 'dev'); assert.equal(config.sendEnabled, false); }); test('aiMaxCandidates default e igual a candidatePoolSize default -- nenhum candidato elegivel fica de fora por cap artificial (missao secao 13)', () => { const config = parseConfig({}); assert.equal(config.aiMaxCandidates, config.candidatePoolSize); }); test('SEND_ENABLED=true liga o envio real; ENVIRONMENT=production e respeitado', () => { const config = parseConfig({ SEND_ENABLED: 'true', ENVIRONMENT: 'production' }); assert.equal(config.sendEnabled, true); assert.equal(config.environment, 'production'); }); test('AI_ENABLED=false desliga a IA', () => { const config = parseConfig({ AI_ENABLED: 'false' }); assert.equal(config.aiEnabled, false); }); test('TOP_N nunca passa de 10 mesmo se configurado maior', () => { const config = parseConfig({ TOP_N: '25' }); assert.equal(config.topN, 10); }); test('overrides numericos sao respeitados', () => { const config = parseConfig({ CANDIDATE_POOL_SIZE: '80', AI_MAX_CANDIDATES: '15', COOLDOWN_DAYS: '2' }); assert.equal(config.candidatePoolSize, 80); assert.equal(config.aiMaxCandidates, 15); assert.equal(config.cooldownDays, 2); });