RF51: Usuario elimina curso de lista 'ver más tarde'
Descripción
Como usuario autenticado, quiero quitar un curso de mi lista "ver más tarde" para mantener mi lista ordenada y relevante.
Elimina la relación entre el usuario y el curso. Solo afecta la lista del usuario autenticado.
| Campo | Valor |
|---|---|
| Módulo | Courses Module |
| Actor | Usuario autenticado |
| Endpoint | DELETE /courses/watch-later/:courseId |
| Precondiciones | Sesión activa |
| Prioridad | Baja (post-MVP) |
| Etapa | MBI 1 |
| Requisitos relacionados | RF49, RF50 |
Reglas de negocio
- RN-51.1 — Solo se elimina de la lista del
user_iddel JWT. - RN-51.2 — Es idempotente: eliminar algo que no está en la lista devuelve éxito sin error.
- RN-51.3 — No elimina el curso del catálogo, solo la relación con el usuario.
Validaciones de entrada
| Campo | Reglas | Mensaje de error |
|---|---|---|
courseId | Obligatorio. UUID. | "Curso no encontrado." (404) si no es un UUID válido |
Authorization | Bearer válido. | "Sesión no válida." (401) |
Criterios de aceptación
Escenario 1: Eliminación exitosa
Dado que tengo un curso en "ver más tarde",
Cuando lo elimino,
Entonces el sistema borra la relación y responde 200 OK,
Y el curso deja de aparecer en mi lista.
Escenario 2: Curso no estaba en la lista (idempotencia)
Dado que el curso no está en mi lista,
Cuando intento eliminarlo,
Entonces el sistema responde 200 OK sin error.
Escenario 3: Aislamiento (seguridad)
Dado que se manipula la petición hacia la lista de otro usuario,
Cuando el backend procesa,
Entonces opera solo sobre la lista del user_id del JWT.
Criterios no funcionales
- Respuesta < 500 ms.
- Comunicación TLS 1.2+.