Skip to content

Entrega S7 - Test Iniciales - #4

Open
andrearocha-git wants to merge 1 commit into
LIDR-academy:mainfrom
andrearocha-git:Alumno/AndreaRocha
Open

Entrega S7 - Test Iniciales#4
andrearocha-git wants to merge 1 commit into
LIDR-academy:mainfrom
andrearocha-git:Alumno/AndreaRocha

Conversation

@andrearocha-git

Copy link
Copy Markdown

Se realiza la entrega de los archivos:

  • backend/src/tests/tests-iniciales.test.ts
  • prompts/prompts-iniciales.md

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:

  • Instalación del backend y frontend del proyecto
  • Generación del archivo de configuración jest.config.js
  • Se abre Claude en el repositorio y se realizan estas dos consultas (prompts):
    1. Chequea el backend y dime si existe la funcionalidad de insertar candidatos en base de datos
    2. Verifica si hay tests para esta funcionalidad y si está correctamente configurado jest

Con 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)

@coderabbitai

coderabbitai Bot commented Aug 15, 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: fd0d0eb4-4588-4b17-831b-818f92e6ee7c


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 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() en beforeEach — 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"
  • validCandidate reutilizado con spread
  • ⚠️ Falta desestructuración tipada (usa any extensivamente 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 ⚠️ No documentado si se verificó 🟡

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

  1. 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).

  2. 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.

  3. 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

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