From b08879471669ae6d38f282932518e4ffa2af9775 Mon Sep 17 00:00:00 2001 From: monomono Date: Sat, 15 Aug 2026 14:56:09 -0500 Subject: [PATCH] docs: agregar workflow TDD rojo/verde con confirmacion de fallos de tests --- AGENTS.md | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/AGENTS.md b/AGENTS.md index 4d4f0fa..47146f3 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -159,7 +159,44 @@ Nota: El volumen monta `tienda_ilusion/` en `/app/`, por lo que el path correcto ## Tests - Framework: Django unittest - Directorio: don_confiao/tests/ -- Ejecutar: `docker-compose -f docker-compose.dev.yml run --rm django python manage.py test` +- Ejecutar: `docker compose -f docker-compose.dev.yml run --rm django python manage.py test` + +## Workflow TDD (Semáforo Rojo/Verde) + +Todo cambio o nueva funcionalidad debe seguir TDD. **Está prohibido asumir fallos de tests: todo fallo debe ser confirmado ejecutando los tests.** + +### Regla de oro: confirmar antes de modificar +Antes de modificar tests (por cambios en comportamiento o por nuevas funcionalidades), **SIEMPRE ejecutar los tests primero** y confirmar que el fallo esperado realmente ocurre. Nunca asumir que un test falla: verificar el fallo con la ejecución real. + +### Ciclo Rojo → Verde → Refactor +1. **ROJO (escribir el test y confirmar que falla)**: + - Escribir o modificar el test que describe el comportamiento esperado. + - Ejecutar los tests **antes de tocar el código de producción**. + - Confirmar que el test falla por el motivo esperado (assertion fallida por el comportamiento nuevo, no por error de setup o de importación). + - Copiar el output del fallo como evidencia del semáforo rojo. + +2. **VERDE (implementar lo mínimo para que pase)**: + - Implementar el código de producción mínimo necesario para que el test pase. + - Volver a ejecutar los tests y confirmar que el semáforo queda en verde. + +3. **REFACTOR (limpiar con los tests en verde)**: + - Refactorizar y limpiar el código sin cambiar comportamiento. + - Re-ejecutar los tests para confirmar que siguen en verde. + +### Ejecutar tests +Siempre ejecutar dentro del contenedor de desarrollo: +```bash +# Test específico (durante el ciclo, preferible sobre el suite completo para ser rápido) +docker compose -f docker-compose.dev.yml run --rm django python manage.py test don_confiao.tests. + +# Suite completa (al finalizar, para confirmar que nada se rompió) +docker compose -f docker-compose.dev.yml run --rm django python manage.py test +``` + +### Confirmar el fallo, no asumirlo +- Si un test falla o se espera que falle, **ejecutarlo y mostrar el resultado** antes de cambiar cualquier código o test. +- Verificar que el fallo corresponde a la razón esperada (leer el traceback), no a un problema de entorno, migraciones, importaciones o fixtures. +- No modificar tests para "hacerlos pasar" si el fallo no fue previamente confirmado. ## Comandos Útiles (dentro del contenedor) - Migraciones: `docker-compose -f docker-compose.dev.yml run --rm django python manage.py makemigrations && docker-compose -f docker-compose.dev.yml run --rm django python manage.py migrate`