Skip to content

Add initial candidate unit tests - #5

Open
AlejandroNicolaide wants to merge 1 commit into
LIDR-academy:mainfrom
AlejandroNicolaide:tests-iniciales
Open

Add initial candidate unit tests#5
AlejandroNicolaide wants to merge 1 commit into
LIDR-academy:mainfrom
AlejandroNicolaide:tests-iniciales

Conversation

@AlejandroNicolaide

Copy link
Copy Markdown

Adds the initial Jest unit tests for candidate creation.

  • Covers candidate data reception in the controller.
  • Covers candidate persistence through the service.
  • Uses mocks to avoid real database access.
  • Includes the prompts used during the exercise.

@coderabbitai

coderabbitai Bot commented Aug 16, 2026

Copy link
Copy Markdown

Important

Review available on request

  • 🔍 Trigger review

Reviews should be triggered manually for repositories with fewer than 10 stars. Select Trigger review above or comment @coderabbitai review to review the latest changes. For a full review, comment @coderabbitai full review.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: aa4cdcad-cfb7-43f3-88d4-45ea25b7ed3c


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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@LIDR-AI4Devs LIDR-AI4Devs left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔬 REVISIÓN DETALLADA: Tests Iniciales — TDD

📊 SCORING GLOBAL

Categoría Score Max Notas
Calidad de Prompts 20 30 3 prompts secuenciales, claros pero sin técnicas avanzadas
Calidad de Tests (Arch + Clean + Seg + Cov) 22 40 112 líneas, solo 2 tests, mocking de modelos de dominio
Coherencia Prompt-Tests 14 20 Cada prompt genera exactamente 1 test — coherente pero mínimo
Documentación 7 10 PR body correcto, prompts documentan ajustes manuales
Base 63 100

SCORE FINAL: 63/100 — ⭐⭐⭐ (Bueno)


🔍 ANÁLISIS DETALLADO

Calidad de Prompts — 20/30

Archivo: prompts/prompts-iniciales.md (43 líneas)

El archivo documenta 3 prompts secuenciales y una sección de ajustes manuales. Enfoque claro y pragmático.

Fortalezas:

  • ✅ Secuencia lógica: identificar casos → test controller → test servicio
  • ✅ Especifica qué debe verificar cada test (5 criterios explícitos por test)
  • ✅ Documenta ajustes manuales y resolución de problemas con Prisma

Debilidades:

  • ⚠️ Sin técnica Role-Based — no establece expertise del modelo
  • ⚠️ Sin restricciones operativas (no modificar código, no BD real)
  • ⚠️ Sin contexto del proyecto (delega en "analiza la funcionalidad")
  • ⚠️ No pide edge cases ni validaciones de campos

Calidad de Tests — 22/40

Archivo: backend/src/tests/tests-iniciales.test.ts (112 líneas, 2 tests)

Arquitectura — 6/10

  • jest.doMock + require() para evitar hoisting — patrón válido pero verbose
  • ⚠️ Mockea modelos de dominio individuales (Candidate, Education, etc.) — más invasivo que mockear @prisma/client
  • ⚠️ jest.resetModules() + jest.clearAllMocks() en cada beforeEach — necesario por el patrón doMock

Cobertura — 4/10

  • ✅ Familia 1: controller recibe datos y responde 201
  • ✅ Familia 2: servicio crea candidato con save()
  • ❌ Solo 2 tests — cobertura mínima
  • ❌ No testea: validaciones de campos (email, nombre, teléfono), errores, edge cases, email duplicado
  • ❌ No testea: educaciones, experiencias, CV

Clean Code — 6/10

  • ✅ Naming descriptivo en español
  • ✅ Datos de candidato con nombre del alumno (personalizado)
  • ⚠️ Datos duplicados entre los 2 tests — falta extracción a fixture compartido
  • ⚠️ as unknown as Response — type casting forzado

Seguridad — 6/10

  • ⚠️ No verifica comportamiento ante datos inválidos
  • ⚠️ No testea manejo de errores

Coherencia Prompt-Tests — 14/20

Pedido en Prompt Presente en Tests Status
Test controller (201, datos, JSON) ✅ 1 test 🟢
Test servicio (save, mock modelos) ✅ 1 test 🟢
Sin acceso real a BD ✅ Todo mockeado 🟢
2 familias con "al menos un caso" ✅ 1+1 🟡 Mínimo literal

Los tests hacen exactamente lo que los prompts pidieron — ni más ni menos. La coherencia es alta pero el alcance es bajo.


Documentación — 7/10

  • ✅ PR body conciso y correcto
  • ✅ Sección "Ajustes manuales" documenta el problema con Prisma y la solución
  • ✅ Comando de ejecución incluido
  • ⚠️ No documenta herramienta AI utilizada
  • ⚠️ No incluye resultados de ejecución

📈 TRAYECTORIA DE MEJORA

Recomendaciones prioritarias

  1. Ampliar cobertura significativamente — Los 2 tests actuales son un esqueleto. Agregar: validación de email/nombre/teléfono inválidos, email duplicado, educaciones y experiencias, manejo de errores → +10-15 puntos.

  2. Considerar mockear @prisma/client en lugar de modelos — Es menos invasivo y más cercano a cómo el código realmente funciona. Los PRs #1-#4 de la cohorte usan este enfoque.

  3. Agregar técnicas de prompting al prompt — Role-Based, restricciones explícitas, y pedido de edge cases habría producido una suite más robusta.


Revisión generada por Agente Revisor Lidr | PR #5 | @AlejandroNicolaide | 2026-08-19

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants