test/pipeline.test.ts (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
import { describe, it, expect } from 'vitest';
import { normalizarUrl } from '../src/core/pipeline.js';
import { acharVerbete } from '../src/knowledge/tecnologias.js';
import { montarTrilha } from '../src/knowledge/trilhas.js';
import type { Detection } from '../src/core/types.js';
describe('normalizarUrl', () => {
it('adiciona https:// quando ausente', () => {
expect(normalizarUrl('exemplo.com')).toBe('https://exemplo.com');
});
it('preserva o protocolo existente', () => {
expect(normalizarUrl('http://exemplo.com')).toBe('http://exemplo.com');
});
});
describe('base de conhecimento', () => {
it('acha verbete por sinônimo', () => {
expect(acharVerbete('nextjs')?.nome).toBe('Next.js');
});
it('retorna indefinido para desconhecido', () => {
expect(acharVerbete('tecnologia-inexistente-xyz')).toBeUndefined();
});
});
describe('trilha de estudo', () => {
it('ancora a trilha no framework detectado', () => {
const deteccoes: Detection[] = [
{ nome: 'Next.js', categorias: ['Web frameworks'], confianca: 100, faixa: 'praticamente confirmado', evidencias: [] },
{ nome: 'React', categorias: ['JavaScript frameworks'], confianca: 60, faixa: 'possível', evidencias: [] },
];
const trilha = montarTrilha(deteccoes);
expect(trilha[0]).toBe('HTML semântico');
expect(trilha).toContain('componentes React');
});
});
|