test(backend): add initial Jest suite and prompt for candidate insert - #10
test(backend): add initial Jest suite and prompt for candidate insert#10nailymm wants to merge 1 commit into
Conversation
Add characterization and edge-case unit tests covering form validation and persistence for candidate creation, plus the prompt used to generate that suite without changing production code.
|
Important Review available on request
Reviews should be triggered manually for repositories with fewer than 10 stars. Select Trigger review above or comment ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
LIDR-AI4Devs
left a comment
There was a problem hiding this comment.
🔬 REVISIÓN DETALLADA: Tests Iniciales — TDD
📊 SCORING GLOBAL
| Categoría | Score | Max | Notas |
|---|---|---|---|
| Calidad de Prompts | 28 | 30 | 188 líneas, CAs formales, reglas TDD, payload de referencia, naming convention |
| Calidad de Tests (Arch + Clean + Seg + Cov) | 35 | 40 | 630 líneas, ~40+ tests, cobertura sólida de ambas familias |
| Coherencia Prompt-Tests | 19 | 20 | Trazabilidad AC-VAL/AC-SAVE → tests con comentarios de criterio |
| Documentación | 7 | 10 | PR body correcto, prompt en ruta estándar |
| Base | 89 | 100 |
Bonus aplicados:
- +5 🌟 Criterios de aceptación formales en el prompt — 8 AC-VAL + 4 AC-SAVE con mensajes de error esperados
SCORE FINAL: 94/100 — ⭐⭐⭐⭐⭐ (Excepcional)
🔍 ANÁLISIS DETALLADO
Calidad de Prompts — 28/30
Archivo: prompts/prompts-iniciales.md (188 líneas)
Prompt muy bien estructurado que combina rol, contexto técnico, criterios de aceptación y reglas de edición.
Técnicas identificadas:
- ✅ Role-Based: "Eres un experto en testing con Node.js, TypeScript y Jest"
- ✅ Constraint-Based fuerte: "Tu única responsabilidad es [...] No generes User Stories, Story Maps, INVEST checks..."
- ✅ CoT implícito: "Antes de escribir los tests, inspecciona: [lista de archivos]"
- ✅ Output Format: Naming convention
<unidad>_<escenario>_<resultado>, comentarios con AC-XX - ✅ Few-Shot: Payload JSON de referencia del README
Aspectos destacados:
- 12 criterios de aceptación formales (AC-VAL-01 a AC-VAL-08 + AC-SAVE-01 a AC-SAVE-04) con mensajes de error esperados
- Reglas TDD explícitas: Red→Green→Refactor, caracterización antes de edge cases
- Anti-scope claro: "No incluyas User Stories, Story Map, matriz, explicación..."
- Imports esperados documentados
Calidad de Tests — 35/40
Archivo: backend/src/tests/tests-iniciales.test.ts (630 líneas, ~40+ tests)
Arquitectura — 9/10
- ✅ Familia A: tests de validación directos contra
validateCandidateData— sin mocks - ✅ Familia B: mock de modelos de dominio con
jest.mock— verifica candidateId propagado - ✅ Naming convention aplicada consistentemente:
validateCandidateData_nombreInvalido_lanzaInvalidName - ✅ Comentarios AC-XX en cada test
Cobertura — 8/10
- ✅ Validación completa: nombre, apellido, email, teléfono, dirección, educaciones, experiencias, CV
- ✅ Persistencia: candidato, educaciones, experiencias, CV, email duplicado (P2002), errores genéricos
- ✅ Edge cases: edit mode con id, cv vacío, sin relacionadas
⚠️ No incluye tests de concurrencia ni tests de seguridad (path traversal, mimetype)
Clean Code — 9/10
- ✅
test.eachpara teléfonos válidos - ✅ Separación visual clara con comments
/* Familia A */,/* Familia B */ - ✅
validBaseminimal y reutilizable
Documentación — 7/10
- ✅ Prompts en
prompts/prompts-iniciales.md— ruta estándar - ✅ PR body conciso y descriptivo: "characterization and edge-case unit tests"
⚠️ No documenta herramienta AI utilizada ni resultados de ejecución⚠️ No documenta iteraciones o ajustes manuales
📈 OBSERVACIONES
-
El prompt de este PR es un referente — La combinación de criterios de aceptación formales + reglas TDD + anti-scope + naming convention produce tests con trazabilidad perfecta.
-
La separación Familia A (sin mocks) vs Familia B (con mocks de modelos) es una decisión arquitectónica limpia: los tests de validación son puros y los de persistencia solo mockean la frontera necesaria.
-
Comparación con #2 y #3: Este PR tiene un prompt igualmente sofisticado pero con enfoque más prescriptivo (CAs predefinidos vs CAs derivados del código). Los tres son referentes con estilos distintos.
Revisión generada por Agente Revisor Lidr | PR #10 | @nailymm | 2026-08-19
Add characterization and edge-case unit tests covering form validation and persistence for candidate creation, plus the prompt used to generate that suite without changing production code.