2026-08-07 — marvelousdb: pruebas de las ultimas rondas
Contexto: el usuario pidio anadir pruebas de las ultimas rondas de features.
Lo que se anadio
-
test/unit.test.js (11 tests) — funciones puras exportadas desde api.js (module.exports ahora incluye slugify, strHash, characterLore, extractQuotes, battleNarrative, fightStats, detectTier):
- slugify: casos raros (“U.S. Agent” → u-s-agent, comillas, parentesis, longitud max 60, idempotencia).
- strHash: determinismo y dispersion (el orden de los ids importa).
- characterLore: primer parrafo real de la bio; generado estable sin bio; distinto entre personajes.
- extractQuotes: 2 quotes deterministas, limpias de markup wiki, rango de longitud; vacio sin texto; distinto por id.
- battleNarrative: report completo (win), draw, victoria de B, quotes como “last words”, onomatopeyas, determinismo deepStrictEqual.
- detectTier: structured manda, ruido narrativo ignorado, identidad divina en lore (“is an Asgardian…”), human por defecto.
- fightStats: determinismo con luckOverride, caps (powers ⇐ 6, score minimo 1 aun con luck -1 y bio vacia).
-
test/web.test.js (11 tests) — e2e con child processes (API + web reales, puertos efimeros, espera por health):
- Home con nav (VS Battle, Coverage).
- /coverage renderiza el dashboard.
- /vs con ambos buscadores.
- /vs/:pair arcade: BATTLE REPORT, winner/loser tags, clases winner/ defeated, linea “used X!”, cierre narrativo.
- /vs/:pair da el MISMO resultado que ?a=&b= (URL compartible).
- Slugs desconocidos → 404.
- shareUrl embebido: location.origin + ‘/vs/cthulhu-vs-u-s-agent’.
- Proxy /api: GET health JSON, POST report + DELETE unreport, imagen reportada → placeholder.
- Personaje sin bio muestra lore generado y ya NO el aviso “no information” (fix: hasData incluye lore en web.js).
- Boton de reporte presente.
Resultado
- Suite completa: 49 tests, 0 fallos (27 api + 11 unit + 11 web).
- Los tests web levantan procesos reales, asi que cubren el proxy y el render de las ultimas rondas (arcade, coverage, reporte, lore).