Commit bb7fa244 by Rubén Ramírez

feat: [TestServicioRecursos]: Actualizado el test de añadir reseñas

parent 06821446
......@@ -647,35 +647,55 @@ public class TestServicioRecursos {
@DirtiesContext
@Transactional
void testAnadirResena() {
// Creo un usuario de prueba
Usuario usuario = new Usuario("usuario@test.com", "Usuario Test", "contraseña123");
servicioUsuarios.crearUsuario(usuario);
// Crear usuario
Usuario usuario1 = new Usuario("usuario1@test.com", "Usuario Uno", "clave123");
servicioUsuarios.crearUsuario(usuario1);
// Creo un recurso de prueba
Recurso recurso = new Recurso("Manga Test", "Descripción de prueba", LocalDate.now(), "Autor X", new byte[0]);
Usuario usuario2 = new Usuario("usuario2@test.com", "Usuario Dos", "clave456");
servicioUsuarios.crearUsuario(usuario2);
// Crear recurso
Recurso recurso = new Recurso("Manga Reseñas", "Reseñas test", LocalDate.now(), "Autor X", new byte[0]);
servicioRecursos.crearRecurso(recurso);
Long recursoId = recurso.getId();
// Creo una reseña para el recurso y el usuario
Resena resena = new Resena(usuario, recurso, 5, "Muy buen manga");
// Crear primera reseña (sin fecha)
Resena resena1 = new Resena(usuario1, recurso, 4, "Entretenido");
servicioRecursos.anadirResena(resena1);
// Verifico que el recurso inicialmente no tiene reseñas
assertThat(recurso.getResenas()).isEmpty();
// Validar que la fecha se ha establecido automáticamente
Recurso recursoActualizado = servicioRecursos.buscarRecursoPorId(recursoId);
assertThat(recursoActualizado.getResenas()).hasSize(1);
Resena r1 = recursoActualizado.getResenas().getFirst();
assertThat(r1.getFechaPublicacion()).isEqualTo(LocalDate.now());
assertThat(r1.getEstrellas()).isEqualTo(4);
assertThat(recursoActualizado.getMediaEstrellas()).isEqualTo(4.0);
// Añado la reseña al recurso
servicioRecursos.anadirResena(resena);
recurso = servicioRecursos.buscarRecursoPorId(recurso.getId());
// Crear segunda reseña
Resena resena2 = new Resena(usuario2, recurso, 2, "Meh");
servicioRecursos.anadirResena(resena2);
// Verifico que la reseña se haya añadido correctamente
assertThat(recurso.getResenas()).hasSize(1);
assertThat(recurso.getResenas().get(0).getTexto()).isEqualTo("Muy buen manga");
assertThat(recurso.getResenas().get(0).getEstrellas()).isEqualTo(5);
assertThat(recurso.getResenas().get(0).getUsuario().getEmail()).isEqualTo("usuario@test.com");
assertThat(recurso.getResenas().get(0).getFechaPublicacion()).isEqualTo(LocalDate.now());
Recurso recursoActualizado = servicioRecursos.buscarRecursoPorId(recurso.getId());
assertThat(recursoActualizado.getResenas()).hasSize(1);
assertThat(recursoActualizado.getResenas().get(0).getTexto()).isEqualTo("Muy buen manga");
// Validar reseñas en orden descendente por fecha
List<Resena> resenas = servicioRecursos.obtenerResenasDeRecurso(recursoId);
assertThat(resenas).hasSize(2);
assertThat(resenas.get(0).getFechaPublicacion()).isAfterOrEqualTo(resenas.get(1).getFechaPublicacion());
// Validar datos de las reseñas
assertThat(resenas.stream().map(Resena::getTexto))
.containsExactlyInAnyOrder("Entretenido", "Meh");
// Validar media de estrellas
assertThat(servicioRecursos.buscarRecursoPorId(recursoId).getMediaEstrellas()).isEqualTo(3.0);
// Verificar que la relación bidireccional es correcta
for (Resena resena : resenas) {
assertThat(resena.getRecurso().getId()).isEqualTo(recursoId);
assertThat(resena.getUsuario()).isNotNull();
assertThat(resena.getEstrellas()).isBetween(1, 5); // Validación de rango si fuera aplicable
}
}
@Test
@DirtiesContext
@Transactional
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment