Commit 111fdbb8 by Rubén Ramírez

feat: [TestServicioBibliotecaPersonal]: Hechas las funciones y test de los nuevos métodos

parent f1e05c7f
......@@ -53,4 +53,9 @@ public class RepositorioUsuario {
.stream()
.findFirst();
}
public Usuario findById(Long usuarioId) {
return em.find(Usuario.class, usuarioId);
}
}
package com.ujaen.tfg.mangaffinity.servicios;
import com.ujaen.tfg.mangaffinity.entidades.BibliotecaPersonal;
import com.ujaen.tfg.mangaffinity.entidades.Usuario;
import com.ujaen.tfg.mangaffinity.excepciones.UsuarioNoExiste;
import com.ujaen.tfg.mangaffinity.excepciones.UsuarioYaRegistrado;
......@@ -61,7 +62,7 @@ public class ServicioUsuarios {
if (usuario.getEmail().equalsIgnoreCase(admin.getEmail())) {
throw new UsuarioYaRegistrado(); // Evita que se cree otro admin accidentalmente
}
usuario.setBibliotecaPersonal(new BibliotecaPersonal(usuario));
repositorioUsuario.guardar(usuario);
}
......@@ -113,4 +114,8 @@ public class ServicioUsuarios {
throw new UsuarioNoExiste();
}
public BibliotecaPersonal obtenerBibliotecaDeUsuario(Long usuarioId) {
Usuario usuario = repositorioUsuario.findById(usuarioId);
return usuario != null ? usuario.getBibliotecaPersonal() : null;
}
}
package com.ujaen.tfg.mangaffinity.servicios;
import com.ujaen.tfg.mangaffinity.MangAffinityApplication;
import com.ujaen.tfg.mangaffinity.config.JpaTestConfig;
import com.ujaen.tfg.mangaffinity.entidades.*;
import com.ujaen.tfg.mangaffinity.excepciones.RecursoNoExiste;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ActiveProfiles;
import java.time.LocalDate;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows;
@SpringBootTest(classes = {MangAffinityApplication.class, JpaTestConfig.class})
@ActiveProfiles("test")
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
public class TestServicioBibliotecaPersonal {
@Autowired
private ServicioBibliotecaPersonal servicioBibliotecaPersonal;
@Autowired
private ServicioUsuarios servicioUsuarios;
@Autowired
private ServicioRecursos servicioRecursos;
@Test
@DirtiesContext
void testAnadirRecursoBiblioteca() {
// Creo un usuario
Usuario usuario = new Usuario("test@email.com", "usuarioTest", "password123");
servicioUsuarios.crearUsuario(usuario);
BibliotecaPersonal bibliotecaPersonal = usuario.getBibliotecaPersonal();
// Creo un recurso
Recurso recurso = new Recurso("Manga de prueba", "Descripción", LocalDate.now(), "Autor");
servicioRecursos.crearRecurso(recurso);
Recurso recursoGuardado = servicioRecursos.buscarRecursoPorTitulo("Manga de prueba").getFirst();
servicioBibliotecaPersonal.anadirRecursoBiblioteca(bibliotecaPersonal, recursoGuardado, Categoria.AL_DIA);
// vERIFICO que se ha agregado
List<BibliotecaPersonalRecurso> recursos = servicioBibliotecaPersonal.listarPorCategoria(bibliotecaPersonal.getId(), Categoria.AL_DIA);
assertThat(recursos).isNotEmpty();
assertThat(recursos.getFirst().getRecurso().getTitulo()).isEqualTo("Manga de prueba");
}
@Test
@DirtiesContext
void testListarRecursosPorCategoria() {
// Creo un usuario con su biblioteca personal
Usuario usuario = new Usuario("otro@email.com", "usuarioOtro", "claveSegura");
servicioUsuarios.crearUsuario(usuario);
BibliotecaPersonal bibliotecaPersonal = usuario.getBibliotecaPersonal();
// Creo unos cuantos recursos de prueba
Recurso recurso1 = new Recurso("Manga Acción", "Sinopsis 1", LocalDate.now(), "Autor A");
Recurso recurso2 = new Recurso("Manga Romance", "Sinopsis 2", LocalDate.now(), "Autor B");
servicioRecursos.crearRecurso(recurso1);
servicioRecursos.crearRecurso(recurso2);
// Los añado recursos en diferentes categorías
servicioBibliotecaPersonal.anadirRecursoBiblioteca(bibliotecaPersonal, recurso1, Categoria.AL_DIA);
servicioBibliotecaPersonal.anadirRecursoBiblioteca(bibliotecaPersonal, recurso2, Categoria.ABANDONADO);
// Pruebo el listar
List<BibliotecaPersonalRecurso> recursosAlDia = servicioBibliotecaPersonal.listarPorCategoria(bibliotecaPersonal.getId(), Categoria.AL_DIA);
assertThat(recursosAlDia).hasSize(1);
assertThat(recursosAlDia.getFirst().getRecurso().getTitulo()).isEqualTo("Manga Acción");
List<BibliotecaPersonalRecurso> recursosAbandonados = servicioBibliotecaPersonal.listarPorCategoria(bibliotecaPersonal.getId(), Categoria.ABANDONADO);
assertThat(recursosAbandonados).hasSize(1);
assertThat(recursosAbandonados.getFirst().getRecurso().getTitulo()).isEqualTo("Manga Romance");
List<BibliotecaPersonalRecurso> recursosSinLeer = servicioBibliotecaPersonal.listarPorCategoria(bibliotecaPersonal.getId(), Categoria.PENDIENTE);
assertThat(recursosSinLeer).isEmpty();
}
@Test
@DirtiesContext
void testEliminarRecursoDeBiblioteca() {
// Creo un usuario y su biblioteca
Usuario usuario = new Usuario("usuario@email.com", "usuarioTest", "password123");
servicioUsuarios.crearUsuario(usuario);
BibliotecaPersonal bibliotecaPersonal = usuario.getBibliotecaPersonal();
// Creo un recurso
Recurso recurso = new Recurso("Manga Prueba", "Descripción", LocalDate.now(), "Autor");
servicioRecursos.crearRecurso(recurso);
Recurso recursoGuardado = servicioRecursos.buscarRecursoPorTitulo("Manga Prueba").getFirst();
servicioBibliotecaPersonal.anadirRecursoBiblioteca(bibliotecaPersonal, recursoGuardado, Categoria.AL_DIA);
List<BibliotecaPersonalRecurso> recursosAntes = servicioBibliotecaPersonal.listarPorCategoria(bibliotecaPersonal.getId(), Categoria.AL_DIA);
assertThat(recursosAntes).isNotEmpty();
// Elimino el recurso de la biblioteca
servicioBibliotecaPersonal.eliminarRecurso(bibliotecaPersonal.getId(), recursoGuardado.getId());
List<BibliotecaPersonalRecurso> recursosDespues = servicioBibliotecaPersonal.listarPorCategoria(bibliotecaPersonal.getId(), Categoria.AL_DIA);
assertThat(recursosDespues).isEmpty();
}
@Test
@DirtiesContext
void testModificarCategoriaDeRecurso() {
// Creo usuario y biblioteca
Usuario usuario = new Usuario("usuario2@email.com", "usuarioMod", "securepass");
servicioUsuarios.crearUsuario(usuario);
BibliotecaPersonal bibliotecaPersonal = usuario.getBibliotecaPersonal();
Recurso recurso = new Recurso("Manga Cambio", "Otra Descripción", LocalDate.now(), "AutorX");
servicioRecursos.crearRecurso(recurso);
Recurso recursoGuardado = servicioRecursos.buscarRecursoPorTitulo("Manga Cambio").getFirst();
servicioBibliotecaPersonal.anadirRecursoBiblioteca(bibliotecaPersonal, recursoGuardado, Categoria.PENDIENTE);
// Verifico que está en la categoría inicial
List<BibliotecaPersonalRecurso> recursosPendientes = servicioBibliotecaPersonal.listarPorCategoria(bibliotecaPersonal.getId(), Categoria.PENDIENTE);
assertThat(recursosPendientes).isNotEmpty();
assertThat(recursosPendientes.getFirst().getCategoria()).isEqualTo(Categoria.PENDIENTE);
// Modifico la categoría del recurso
servicioBibliotecaPersonal.modificarCategoria(bibliotecaPersonal.getId(), recursoGuardado.getId(), Categoria.COMPLETADO);
List<BibliotecaPersonalRecurso> recursosModificados = servicioBibliotecaPersonal.listarPorCategoria(bibliotecaPersonal.getId(), Categoria.COMPLETADO);
assertThat(recursosModificados).isNotEmpty();
assertThat(recursosModificados.getFirst().getCategoria()).isEqualTo(Categoria.COMPLETADO);
// Verifico que ya no está en la categoría anterior
List<BibliotecaPersonalRecurso> recursosPendientesDespues = servicioBibliotecaPersonal.listarPorCategoria(bibliotecaPersonal.getId(), Categoria.PENDIENTE);
assertThat(recursosPendientesDespues).isEmpty();
}
}
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