124 lines
4.7 KiB
JavaScript
124 lines
4.7 KiB
JavaScript
#!/usr/bin/env node
|
||
|
||
// 🧪 TESTE DO MODO RIGOROSO - API ANALYZER V2.0
|
||
// Demonstra como o sistema para a execução quando não consegue acessar endpoints reais
|
||
|
||
const { analyzeAPIForDomain } = require('./create-domain-v2-api-analyzer.js');
|
||
|
||
console.log('🧪 TESTE DO MODO RIGOROSO - API ANALYZER V2.0');
|
||
console.log('='.repeat(50));
|
||
|
||
async function testStrictMode() {
|
||
const testCases = [
|
||
{
|
||
name: 'product',
|
||
description: 'Domínio que DEVERIA ter endpoint real',
|
||
expectation: 'Deve parar execução se não conseguir acessar dados reais'
|
||
},
|
||
{
|
||
name: 'nonexistent',
|
||
description: 'Domínio que NÃO existe na API',
|
||
expectation: 'Deve parar execução no modo rigoroso'
|
||
}
|
||
];
|
||
|
||
for (const testCase of testCases) {
|
||
console.log(`\n${'='.repeat(60)}`);
|
||
console.log(`🔍 TESTANDO: ${testCase.name.toUpperCase()}`);
|
||
console.log(`📋 Descrição: ${testCase.description}`);
|
||
console.log(`🎯 Expectativa: ${testCase.expectation}`);
|
||
console.log('='.repeat(60));
|
||
|
||
try {
|
||
console.log('🔒 Executando em MODO RIGOROSO...\n');
|
||
|
||
const result = await analyzeAPIForDomain(testCase.name, undefined, true);
|
||
|
||
if (result.success) {
|
||
console.log(`✅ SUCESSO! Estratégia: ${result.strategy}`);
|
||
|
||
if (result.strategy === 'response_analysis') {
|
||
console.log('🎉 DADOS REAIS DA API DETECTADOS!');
|
||
console.log(`📊 Endpoint: ${result.metadata.endpoint}`);
|
||
console.log(`📦 Sample size: ${result.metadata.sampleSize}`);
|
||
|
||
console.log('\n📝 Interface gerada:');
|
||
console.log(result.interface.split('\n').slice(0, 10).join('\n'));
|
||
console.log('...');
|
||
} else {
|
||
console.log('⚠️ Usando estratégia alternativa (não dados reais)');
|
||
}
|
||
} else {
|
||
console.log('❌ Falha na análise');
|
||
}
|
||
|
||
} catch (error) {
|
||
if (error.code === 'ENDPOINT_ACCESS_FAILED') {
|
||
console.log('\n🚨 ERRO CRÍTICO DETECTADO!');
|
||
console.log(`❌ ${error.message}`);
|
||
console.log(`🔗 Endpoint que falhou: ${error.endpoint}`);
|
||
console.log('\n🎯 COMPORTAMENTO CORRETO: Sistema parou execução');
|
||
console.log('📋 Isso é o esperado quando endpoint existe mas não consegue acessar');
|
||
|
||
} else if (error.code === 'STRICT_MODE_FAILURE') {
|
||
console.log('\n🚨 MODO RIGOROSO - TODAS AS ESTRATÉGIAS FALHARAM!');
|
||
console.log(`❌ ${error.message}`);
|
||
console.log('\n🎯 COMPORTAMENTO CORRETO: Sistema parou execução');
|
||
console.log('📋 Isso é o esperado quando não consegue obter dados reais');
|
||
|
||
} else {
|
||
console.log('\n❌ ERRO INESPERADO:');
|
||
console.log(error.message);
|
||
}
|
||
}
|
||
|
||
console.log('\n' + '⏸️ '.repeat(30));
|
||
|
||
// Pequena pausa entre testes
|
||
await new Promise(resolve => setTimeout(resolve, 2000));
|
||
}
|
||
|
||
console.log('\n🏁 TESTE DE MODO RIGOROSO CONCLUÍDO');
|
||
console.log('\n📊 RESUMO:');
|
||
console.log('✅ Modo rigoroso implementado');
|
||
console.log('✅ Sistema para execução quando não consegue acessar endpoints reais');
|
||
console.log('✅ Erros informativos com soluções sugeridas');
|
||
console.log('✅ Comportamento correto para diferentes cenários');
|
||
|
||
console.log('\n🚀 PRONTO PARA PRODUÇÃO!');
|
||
console.log('📋 Agora o Create-Domain V2.0 só gera interfaces baseadas em dados reais');
|
||
}
|
||
|
||
// Demonstração de uso normal vs rigoroso
|
||
async function demonstrateComparison() {
|
||
console.log('\n' + '='.repeat(60));
|
||
console.log('🔄 DEMONSTRAÇÃO: MODO NORMAL VS RIGOROSO');
|
||
console.log('='.repeat(60));
|
||
|
||
const testDomain = 'product';
|
||
|
||
console.log('\n1️⃣ MODO NORMAL (strictMode = false):');
|
||
try {
|
||
const normalResult = await analyzeAPIForDomain(testDomain, undefined, false);
|
||
console.log(`✅ Resultado: ${normalResult.strategy} (${normalResult.fields.length} campos)`);
|
||
console.log('📋 Modo normal: Sempre retorna resultado (fallback se necessário)');
|
||
} catch (error) {
|
||
console.log(`❌ Erro no modo normal: ${error.message}`);
|
||
}
|
||
|
||
console.log('\n2️⃣ MODO RIGOROSO (strictMode = true):');
|
||
try {
|
||
const strictResult = await analyzeAPIForDomain(testDomain, undefined, true);
|
||
console.log(`✅ Resultado: ${strictResult.strategy} (${strictResult.fields.length} campos)`);
|
||
console.log('📋 Modo rigoroso: Só aceita dados reais da API');
|
||
} catch (error) {
|
||
console.log(`❌ Erro no modo rigoroso: ${error.message}`);
|
||
console.log('📋 Modo rigoroso: Para execução se não conseguir dados reais');
|
||
}
|
||
}
|
||
|
||
if (require.main === module) {
|
||
testStrictMode()
|
||
.then(() => demonstrateComparison())
|
||
.catch(console.error);
|
||
}
|