RF50: Usuario agrega curso a lista 'ver más tarde'
Descripción
Como usuario autenticado, quiero guardar un curso en mi lista "ver más tarde" para retomarlo cuando tenga tiempo.
Crea una relación entre el usuario y el curso. Es idempotente: guardar dos veces el mismo curso no lo duplica.
| Campo | Valor |
|---|---|
| Módulo | Courses Module |
| Actor | Usuario autenticado |
| Endpoint | POST /courses/watch-later ({ courseId }) |
| Precondiciones | Sesión activa; el curso existe y está publicado |
| Prioridad | Baja (post-MVP) |
| Etapa | MBI 1 |
| Requisitos relacionados | RF49, RF51 |
Reglas de negocio
- RN-50.1 — Solo se pueden guardar cursos existentes y publicados.
- RN-50.2 — La relación es única por (usuario, curso); guardar de nuevo es idempotente.
- RN-50.3 — La lista pertenece al
user_iddel JWT.
Validaciones de entrada
| Campo | Reglas | Mensaje de error |
|---|---|---|
courseId | Obligatorio. UUID de curso publicado. | "Curso no encontrado." (404) |
Authorization | Bearer válido. | "Sesión no válida." (401) |
Criterios de aceptación
Escenario 1: Agregar curso exitoso
Dado que veo un curso publicado,
Cuando lo agrego a "ver más tarde",
Entonces el sistema crea la relación y responde 201 Created,
Y el curso aparece en mi lista (RF49).
Escenario 2: Curso ya guardado (idempotencia)
Dado que el curso ya está en mi lista,
Cuando lo agrego de nuevo,
Entonces el sistema responde 200 OK sin duplicarlo.
Escenario 3: Curso inexistente o no publicado
Dado que envío un courseId que no existe o no está publicado,
Cuando intento agregarlo,
Entonces el sistema responde 404 Not Found.
Criterios no funcionales
- Respuesta < 500 ms; restricción de unicidad en DB.
- Comunicación TLS 1.2+.