Skip to content

fix: teléfonos dados de baja en las respuestas y validación de los datos de contacto que edita el estudiante

belen.varsi requested to merge fix/telefonos-eliminados-en-respuesta into dev

Descripción:

Qué cambia

1. Solo se devuelven los teléfonos activos

  • Al reemplazar un teléfono, asignarTelefonos() deja el anterior en estado ELIMINADO (baja lógica), pero EstudianteMapper.mapTelefonos() devolvía todos los teléfonos de la colección.
  • Por eso la ficha del estudiante, el resumen del listado y "Mi perfil" seguían mostrando el número viejo junto al nuevo.
  • Ahora el mapper filtra por estado ACTIVO. Afecta a toDto, toResumenDto y toMiPerfilDto.
  • En la base no cambia nada: el teléfono anterior se sigue conservando como ELIMINADO.

2. Validación de formato en la autogestión del estudiante

  • MisDatosRequestDTO (PUT /estudiantes/{id}/mis-datos) solo validaba largos. Una calle con punto o un teléfono con guiones llegaba hasta el INSERT, la base lo rechazaba por sus restricciones y la API respondía un 409 genérico.
  • Ahora aplica los mismos patrones que EstudianteRequestDTO:
    • calle, ciudad y departamento: solo letras, números y espacios;
    • teléfonos: entre 8 y 12 dígitos numéricos (antes se aceptaban de 8 a 15 caracteres de cualquier tipo).
  • Un valor inválido responde 400 con el campo en detalles (ej. "calle": "Solo se permiten letras, números y espacios").

Tests

  • EstudianteMapperTest: nuevo caso que verifica que se excluyen los teléfonos ELIMINADO.
  • MisDatosRequestDTOTest (nuevo): datos válidos, todos vacíos, calle con punto, ciudad y departamento con símbolos, teléfono con guiones, teléfono de 13 dígitos y límites de 8 y 12 dígitos.

Cómo probar

  1. Autenticado como estudiante, enviar PUT /estudiantes/{id}/mis-datos reemplazando el teléfono: la respuesta debe traer solo el teléfono nuevo.
  2. GET /estudiantes/mi-perfil: debe mostrar solo el teléfono nuevo.
  3. Enviar "calle": "Av. 18 de Julio" o "telefonos": ["099-123-45"]: debe responder 400 con el campo en detalles y sin modificar los datos guardados.

Relacionado

Se mergea junto con el MR del front feature/autogestion-perfil-estudiante, que agrega la edición de contacto en "Mi perfil".

Merge request reports

Loading