From d9f77e6e4db432ca0fa9a958409659f26263e084 Mon Sep 17 00:00:00 2001 From: borja Date: Mon, 13 Oct 2025 15:41:57 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20a=C3=B1ade=20pruebas=20bun:test=20y=20m?= =?UTF-8?q?ejora=20estado=20en=20README=20y=20docs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: aider (openrouter/openai/gpt-5) --- README.md | 10 ++++++++-- docs/operations.md | 5 +++-- docs/plan-interfaz-web.md | 2 ++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 41130c0..1178f08 100644 --- a/README.md +++ b/README.md @@ -90,12 +90,18 @@ Consulta: - Migraciones up-only al arranque; logging de eventos de migración. - Copias de seguridad: respaldar el directorio data/ y planificar retención. +## Pruebas (bun:test) +- Suite web implementada con build programático: los tests construyen apps/web (adapter-node) una única vez, arrancan el servidor en un puerto efímero y hacen peticiones HTTP reales. +- Sin dependencias externas: bun:test, bun:sqlite y helpers propios. +- Cobertura actual: endpoints /api/me/tasks (gating, orden, búsqueda con ESCAPE, soonDays y paginación), /api/me/preferences (valores por defecto) y helpers de servidor para build/arranque. +- Ejecución: bun test tests/web + ## Estado y licencia - Nombre provisional: “Taskbot”. - Licencia por definir (software libre; se evaluará GPLv3/AGPL/MIT/Apache-2.0). -- Progreso Etapa 1 (autenticación web): completada. /login (GET intermedio + POST), sesión con idle 2h, logout y ruta /app protegida; desplegado con proxy interno en Bun. -- Lectura (MVP) en curso: endpoints GET /api/me/tasks (orden por fecha de vencimiento), /api/me/groups (con contadores) y /api/groups/:id/tasks; UI de Grupos en /app/groups. +- Etapa 1 (autenticación web): completada. /login (GET intermedio + POST), sesión con idle 2h, logout y ruta /app protegida; desplegado con proxy interno en Bun. +- Etapa 2 (lectura de datos - MVP): completada. GET /api/me/tasks (orden por due_date asc con NULL al final, búsqueda con ESCAPE, filtros soonDays/dueBefore, paginación page/limit), GET /api/me/groups (contadores open/unassigned) y GET /api/groups/:id/tasks (unassignedFirst, onlyUnassigned, limit). UI: /app (Mis tareas, filtros/búsqueda/paginación) y /app/groups (bloque “sin responsable” con prefetch). - Roadmap y contribuciones: pendientes de publicación. ## Enlaces diff --git a/docs/operations.md b/docs/operations.md index 4913279..157f560 100644 --- a/docs/operations.md +++ b/docs/operations.md @@ -35,11 +35,11 @@ Endpoints operativos - 200 siempre (proxy interno), útil para healthcheck del contenedor. - APIs web (requieren sesión) - GET /api/me/tasks?status=open&search=... - - Orden por fecha de vencimiento ascendente (NULL al final). Aplica gating por AllowedGroups + membresía activa (group_members). Soporta búsqueda simple por descripción. + - Orden por fecha de vencimiento ascendente (NULL al final). Aplica gating por AllowedGroups + membresía activa (group_members). Búsqueda por descripción con LIKE y ESCAPE '\'. Filtros dueBefore y soonDays (en días). Paginación page/limit y campos hasMore/total en la respuesta. - GET /api/me/groups - Devuelve solo grupos permitidos donde el usuario está activo. Incluye counts.open y counts.unassigned por grupo. - GET /api/groups/:id/tasks?unassignedFirst=true - - Requiere que el usuario sea miembro activo del grupo y que el grupo esté permitido. Orden por due_date (NULL al final), con opción de priorizar tareas sin responsable. + - Requiere que el usuario sea miembro activo del grupo y que el grupo esté permitido. Orden por due_date (NULL al final); admite parámetros unassignedFirst, onlyUnassigned y limit (clamp a 100). Arranque y servicios - src/server.ts::start() (bot) @@ -82,6 +82,7 @@ Buenas prácticas - No arrancar schedulers en test salvo que FORCE_SCHEDULERS='true'. - Validar nuevas env en src/server.ts::validateEnv() y documentarlas aquí. - En apps/web, kit.csrf.checkOrigin=false debido al proxy interno; considerar alternativas si se elimina el proxy. +- Tests web con bun:test: construcción programática de apps/web (build/), arranque real del servidor y peticiones HTTP reales; ver tests/web/helpers/server.ts. Formato de fechas en comandos - Se aceptan únicamente YYYY-MM-DD y YY-MM-DD (YY se expande a 20YY). diff --git a/docs/plan-interfaz-web.md b/docs/plan-interfaz-web.md index c57a74d..c8b99fa 100644 --- a/docs/plan-interfaz-web.md +++ b/docs/plan-interfaz-web.md @@ -215,6 +215,8 @@ Etapa 6 — Evolutivos (posteriores) ## 14) Pruebas +Implementado: suite web con bun:test y build programático (helpers en tests/web/helpers/server.ts). Los tests arrancan la web real (adapter-node) y ejercitan endpoints y páginas vía HTTP, usando una base SQLite temporal. + - Unit: - Emisión/canje de token, expiración, cookie y expiración por inactividad. - Autorización de endpoints (gating, membresía).