Commit 91dfaec9 by Rubén Ramírez

feat: [TestServicioRecurso]: Testeada una función obtener las recomendaciones

parent 88e7362f
......@@ -730,5 +730,55 @@ public class TestServicioRecursos {
assertThat(resenas.get(1).getTexto()).isEqualTo("Buena reseña");
assertThat(resenas.get(2).getTexto()).isEqualTo("Normalita");
}
@Test
@DirtiesContext
@Transactional
void testObtenerRecomendacionesParaUsuario() {
// Crear usuario y su biblioteca
Usuario usuario = new Usuario("recom@test.com", "Usuario Recom", "clave123");
servicioUsuarios.crearUsuario(usuario);
Long usuarioId = usuario.getId();
BibliotecaPersonal biblioteca = usuario.getBibliotecaPersonal();
// Crear recurso favorito del usuario
Recurso favorito = new Recurso("Recurso Favorito", "Descripción", LocalDate.now(), "Autor X", new byte[0]);
favorito.getGeneros().add(Genero.SHONEN);
servicioRecursos.crearRecurso(favorito);
biblioteca.anadirFavorito(favorito.getId());
// Crear otros recursos
Recurso porAutor = new Recurso("Recomendado por autor", "Desc", LocalDate.now(), "Autor X", new byte[0]);
Recurso porGenero = new Recurso("Recomendado por género", "Desc", LocalDate.now(), "Otro autor", new byte[0]);
porGenero.getGeneros().add(Genero.SHONEN);
Recurso noRelacionado = new Recurso("No relacionado", "Desc", LocalDate.now(), "Otro", new byte[0]);
noRelacionado.getGeneros().add(Genero.ROMANCE);
// Uno que está en la biblioteca y no debe recomendarse
Recurso yaEnBiblioteca = new Recurso("Ya en biblioteca", "Desc", LocalDate.now(), "Autor X", new byte[0]);
servicioRecursos.crearRecurso(yaEnBiblioteca);
// Guardar los recomendables
servicioRecursos.crearRecurso(porAutor);
servicioRecursos.crearRecurso(porGenero);
servicioRecursos.crearRecurso(noRelacionado);
// Añadir el recurso a la biblioteca para que se excluya
BibliotecaPersonalRecurso bpr = new BibliotecaPersonalRecurso(biblioteca, yaEnBiblioteca, Categoria.AL_DIA);
biblioteca.getRecursos().add(bpr);
// Obtener recomendaciones
List<Recurso> recomendaciones = servicioRecursos.obtenerRecomendacionesParaUsuario(usuarioId);
// Comprobaciones
assertThat(recomendaciones).isNotEmpty();
assertThat(recomendaciones).hasSizeLessThanOrEqualTo(4);
// Debe incluir por autor o por género, y excluir los otros
List<String> titulos = recomendaciones.stream().map(Recurso::getTitulo).toList();
assertThat(titulos).contains("Recomendado por autor", "Recomendado por género");
assertThat(titulos).doesNotContain("Recurso Favorito", "Ya en biblioteca", "No relacionado");
}
}
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