Entrega S7 - Test Iniciales - #4
Conversation
|
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 | 24 | 30 | Prompt bien estructurado con rol, reglas operativas y patrón AAA |
| Calidad de Tests (Arch + Clean + Seg + Cov) | 30 | 40 | 201 líneas, InMemory repo, patrón AAA, pero cobertura limitada (5 tests) |
| Coherencia Prompt-Tests | 16 | 20 | Tests cumplen las 2 familias pero con mínimo de casos |
| Documentación | 8 | 10 | PR body describe proceso incluyendo Gemini Notebook para el prompt |
| Base | 78 | 100 |
Bonus aplicados:
- +5 🌟 InMemory Repository como mock — Patrón sofisticado: el mock reproduce comportamiento del ORM (autoincremento, unicidad) en lugar de stubs simples
SCORE FINAL: 83/100 — ⭐⭐⭐⭐ (Muy Bueno)
🔍 ANÁLISIS DETALLADO
Calidad de Prompts — 24/30
Archivo: prompts/prompts-iniciales.md (31 líneas, ~2.7KB)
Técnicas identificadas:
- ✅ Role-Based: "Eres un experto en Testing automatizado, TypeScript y arquitectura limpia, especializado en Jest"
- ✅ Constraint-Based: 6 reglas operativas numeradas (RED, BDD, AAA, Mocks, Fake It, Dueño de spec)
- ✅ Output Format: Especifica nombre de archivo, ubicación, estilo BDD
Aspectos destacados:
- La regla #1 (validación del rojo) muestra comprensión del problema de escribir tests sobre código existente
- La regla #6 ("yo soy el dueño de los tests") establece una relación sana humano-IA
- La regla #4 (InMemory) guía hacia un patrón arquitectónico superior al mock plano
Debilidades:
⚠️ No define criterios de aceptación específicos — deja al modelo decidir qué validaciones testear⚠️ No incluye modelo de datos ni payload de referencia⚠️ El contexto técnico delega en "lee el README" sin dar estructura específica del backend
Calidad de Tests — 30/40
Archivo: backend/src/tests/tests-iniciales.test.ts (201 líneas)
Arquitectura — 9/10
- ✅ InMemory Repository con estado real (arrays) — reproduce autoincremento, unicidad de email y
findUnique - ✅
__inMemoryDb.reset()enbeforeEach— aislamiento completo entre tests - ✅
jest.fn()en cada operación del mock — permite verificar llamadas Y tener comportamiento real
Cobertura — 6/10
- ✅ Familia 1: email inválido, nombre faltante
- ✅ Familia 2: persistencia con id, educación con candidateId, email duplicado
⚠️ Solo 5 tests — alcance mínimo para el ejercicio- ❌ No testea: teléfono, dirección, experiencia laboral, CV, errores de BD, update
- ❌ No testea edge cases: campos vacíos, longitudes límite, formatos de fecha
Clean Code — 8/10
- ✅ Patrón AAA con comentarios
// Arrange,// Act,// Assert— cumple regla #3 del prompt - ✅ Naming BDD claro: "rechaza la creación cuando el email no tiene un formato válido y no persiste ningún registro"
- ✅
validCandidatereutilizado con spread ⚠️ Falta desestructuración tipada (usaanyextensivamente en el mock)
Seguridad — 7/10
- ✅ Verifica que validación fallida no persiste registros (
expect(inMemoryDb.candidates).toHaveLength(0)) ⚠️ No testea vulnerabilidades conocidas del código
Coherencia Prompt-Tests — 16/20
| Pedido en Prompt | Presente en Tests | Status |
|---|---|---|
| Familia 1: validación de entrada | ✅ 2 tests (email, nombre) | 🟡 Mínimo |
| Familia 2: guardado en BD | ✅ 3 tests (persistencia, educación, duplicado) | 🟡 Mínimo |
| BDD naming | ✅ Aplicado correctamente | 🟢 |
| Patrón AAA | ✅ Comentarios en cada test | 🟢 |
| InMemory mock | ✅ Implementado como repositorio con estado | 🟢 |
| Validación del rojo | 🟡 |
Los tests cumplen técnicamente las 2 familias pero con el mínimo de casos. El prompt pedía "al menos un caso cada una" y los tests lo cumplen, pero la riqueza del prompt (6 reglas operativas) sugería una suite más amplia.
Documentación — 8/10
- ✅ PR body describe el proceso: Claude Code + VS Code, Gemini Notebook para el prompt
- ✅ Documenta los pasos previos (instalación, jest.config, consultas iniciales)
- ✅ Observación interesante: "Fue interesante ver el Workflow que utilizaba donde modificaba el código para que falle (fase RED)"
⚠️ No incluye los prompts de las consultas previas mencionadas en el body⚠️ No documenta resultados de ejecución
📈 TRAYECTORIA DE MEJORA
Estado Actual: 83/100 ⭐⭐⭐⭐
Criterios fuertes: Calidad de prompt (24/30), patrón InMemory, AAA
Criterios a mejorar: Cobertura de tests (6/10)
Recomendaciones
-
Ampliar cobertura — Con el InMemory repository ya montado, agregar tests para teléfono, dirección, experiencia laboral y CV sería poco esfuerzo y alto impacto (+6-8 puntos).
-
Documentar la verificación RED — El prompt pide que el modelo indique qué línea romper para ver el test en rojo. Si esa información se recibió, incluirla en el prompts file sería valioso.
-
Incluir los prompts preparatorios — Las 2 consultas previas (chequear funcionalidad + verificar tests) son parte del flujo de trabajo y merecen documentarse.
Revisión generada por Agente Revisor Lidr | PR #4 | @andrearocha-git | 2026-08-19
Se realiza la entrega de los archivos:
Para la generación de los tests he utilizado Claude Code y Visual Studio Code como copiloto de AI
Antes de comenzar el ejercicio se realizaron los siguientes pasos:
jest.config.jsCon la información obtenida de Claude, que la funcionalidad era existente y que no había test, armé el prompt con la ayuda de Gemini Notebook.
Finalmente le pasé el prompt a Claude, para que realice la suite de test de la funcionalidad solicitada. Fue interesante ver el Workflow que utilizaba donde modiificaba el código para que fallé (fase RED) y luego lo revertía para ver el éxito (fase GREEN)