Commit 7d0a7880 by Rubén Ramírez

fix: [TestServicioBibliotecaPersonal]:Mejorados todos los tests para hacer todas las comprobaciones

parent e1465448
......@@ -3,7 +3,10 @@ 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.RecursoEnBiblioteca;
import com.ujaen.tfg.mangaffinity.excepciones.RecursoNoExiste;
import com.ujaen.tfg.mangaffinity.excepciones.RecursoSinCategoria;
import com.ujaen.tfg.mangaffinity.excepciones.UsuarioSinBiblioteca;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
......@@ -14,6 +17,7 @@ import java.time.LocalDate;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy;
import static org.junit.jupiter.api.Assertions.assertThrows;
@SpringBootTest(classes = {MangAffinityApplication.class, JpaTestConfig.class})
......@@ -36,20 +40,40 @@ public class TestServicioBibliotecaPersonal {
// 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", "");
Recurso recurso = new Recurso("Manga de prueba", "Descripción", LocalDate.now(), "Autor", new byte[0]);
servicioRecursos.crearRecurso(recurso);
Recurso recursoGuardado = servicioRecursos.buscarRecursoPorTitulo("Manga de prueba").getFirst();
servicioBibliotecaPersonal.anadirRecursoBiblioteca(bibliotecaPersonal, recursoGuardado, Categoria.AL_DIA);
// Agrego el recurso a la biblioteca
servicioBibliotecaPersonal.anadirRecursoBiblioteca(bibliotecaPersonal.getId(), recursoGuardado.getId(), Categoria.AL_DIA);
// vERIFICO que se ha agregado
// Verifico que el recurso fue agregado
List<BibliotecaPersonalRecurso> recursos = servicioBibliotecaPersonal.listarPorCategoria(bibliotecaPersonal.getId(), Categoria.AL_DIA);
assertThat(recursos).isNotEmpty();
assertThat(recursos.getFirst().getRecurso().getTitulo()).isEqualTo("Manga de prueba");
// Intento agregar el mismo recurso nuevamente
assertThatThrownBy(() ->
servicioBibliotecaPersonal.anadirRecursoBiblioteca(bibliotecaPersonal.getId(), recursoGuardado.getId(), Categoria.AL_DIA)
).isInstanceOf(RecursoEnBiblioteca.class);
// Intento agregar un recurso a una biblioteca que no existe
assertThatThrownBy(() ->
servicioBibliotecaPersonal.anadirRecursoBiblioteca(999L, recursoGuardado.getId(), Categoria.AL_DIA)
).isInstanceOf(UsuarioSinBiblioteca.class);
// Intento agregar un recurso inexistente
assertThatThrownBy(() ->
servicioBibliotecaPersonal.anadirRecursoBiblioteca(bibliotecaPersonal.getId(), 999L, Categoria.AL_DIA)
).isInstanceOf(RecursoNoExiste.class);
// Intento agregar un recurso con categoría nula
assertThatThrownBy(() ->
servicioBibliotecaPersonal.anadirRecursoBiblioteca(bibliotecaPersonal.getId(), recursoGuardado.getId(), null)
).isInstanceOf(RecursoSinCategoria.class);
}
@Test
......@@ -61,14 +85,14 @@ public class TestServicioBibliotecaPersonal {
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", "");
Recurso recurso1 = new Recurso("Manga Acción", "Sinopsis 1", LocalDate.now(), "Autor A", new byte[0]);
Recurso recurso2 = new Recurso("Manga Romance", "Sinopsis 2", LocalDate.now(), "Autor B", new byte[0]);
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);
servicioBibliotecaPersonal.anadirRecursoBiblioteca(bibliotecaPersonal.getId(), recurso1.getId(), Categoria.AL_DIA);
servicioBibliotecaPersonal.anadirRecursoBiblioteca(bibliotecaPersonal.getId(), recurso2.getId(), Categoria.ABANDONADO);
// Pruebo el listar
List<BibliotecaPersonalRecurso> recursosAlDia = servicioBibliotecaPersonal.listarPorCategoria(bibliotecaPersonal.getId(), Categoria.AL_DIA);
......@@ -90,21 +114,29 @@ public class TestServicioBibliotecaPersonal {
BibliotecaPersonal bibliotecaPersonal = usuario.getBibliotecaPersonal();
// Creo un recurso
Recurso recurso = new Recurso("Manga Prueba", "Descripción", LocalDate.now(), "Autor", "");
Recurso recurso = new Recurso("Manga Prueba", "Descripción", LocalDate.now(), "Autor", new byte[0]);
servicioRecursos.crearRecurso(recurso);
Recurso recursoGuardado = servicioRecursos.buscarRecursoPorTitulo("Manga Prueba").getFirst();
servicioBibliotecaPersonal.anadirRecursoBiblioteca(bibliotecaPersonal, recursoGuardado, Categoria.AL_DIA);
// Lo añado a la biblioteca
servicioBibliotecaPersonal.anadirRecursoBiblioteca(bibliotecaPersonal.getId(), recursoGuardado.getId(), Categoria.AL_DIA);
// Verifico que esté añadido
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());
servicioBibliotecaPersonal.eliminarRecursoDeBiblioteca(bibliotecaPersonal.getId(), recursoGuardado.getId());
// Verifico que ya no está
List<BibliotecaPersonalRecurso> recursosDespues = servicioBibliotecaPersonal.listarPorCategoria(bibliotecaPersonal.getId(), Categoria.AL_DIA);
assertThat(recursosDespues).isEmpty();
}
// Intento eliminarlo otra vez (debería lanzar excepción)
assertThatThrownBy(() ->
servicioBibliotecaPersonal.eliminarRecursoDeBiblioteca(bibliotecaPersonal.getId(), recursoGuardado.getId())
).isInstanceOf(RecursoNoExiste.class);
}
@Test
@DirtiesContext
......@@ -114,26 +146,60 @@ public class TestServicioBibliotecaPersonal {
servicioUsuarios.crearUsuario(usuario);
BibliotecaPersonal bibliotecaPersonal = usuario.getBibliotecaPersonal();
Recurso recurso = new Recurso("Manga Cambio", "Otra Descripción", LocalDate.now(), "AutorX", "");
Recurso recurso = new Recurso("Manga Cambio", "Otra Descripción", LocalDate.now(), "AutorX", new byte[0]);
servicioRecursos.crearRecurso(recurso);
Recurso recursoGuardado = servicioRecursos.buscarRecursoPorTitulo("Manga Cambio").getFirst();
servicioBibliotecaPersonal.anadirRecursoBiblioteca(bibliotecaPersonal, recursoGuardado, Categoria.PENDIENTE);
servicioBibliotecaPersonal.anadirRecursoBiblioteca(bibliotecaPersonal.getId(), recursoGuardado.getId(), 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);
// Cambio de categoría
servicioBibliotecaPersonal.cambiarCategoriaRecurso(bibliotecaPersonal.getId(), recursoGuardado.getId(), Categoria.COMPLETADO);
List<BibliotecaPersonalRecurso> recursosCompletados = servicioBibliotecaPersonal.listarPorCategoria(bibliotecaPersonal.getId(), Categoria.COMPLETADO);
assertThat(recursosCompletados).hasSize(1);
assertThat(recursosCompletados.getFirst().getCategoria()).isEqualTo(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();
// No cambia si es misma categoría
servicioBibliotecaPersonal.cambiarCategoriaRecurso(bibliotecaPersonal.getId(), recursoGuardado.getId(), Categoria.COMPLETADO);
List<BibliotecaPersonalRecurso> recursosIgual = servicioBibliotecaPersonal.listarPorCategoria(bibliotecaPersonal.getId(), Categoria.COMPLETADO);
assertThat(recursosIgual).hasSize(1);
// Recurso no existe en biblioteca
assertThatThrownBy(() ->
servicioBibliotecaPersonal.cambiarCategoriaRecurso(bibliotecaPersonal.getId(), 999L, Categoria.ABANDONADO)
).isInstanceOf(RecursoNoExiste.class);
}
@Test
@DirtiesContext
void testBuscarRecursoEnBiblioteca() {
// Creo un usuario y su biblioteca
Usuario usuario = new Usuario("buscar@email.com", "usuarioBuscar", "clave");
servicioUsuarios.crearUsuario(usuario);
BibliotecaPersonal biblioteca = usuario.getBibliotecaPersonal();
// Creo un recurso
Recurso recurso = new Recurso("Recurso Buscar", "Descripción", LocalDate.now(), "Autor", new byte[0]);
servicioRecursos.crearRecurso(recurso);
Recurso guardado = servicioRecursos.buscarRecursoPorTitulo("Recurso Buscar").getFirst();
// Lo añado a la biblioteca
servicioBibliotecaPersonal.anadirRecursoBiblioteca(biblioteca.getId(), guardado.getId(), Categoria.COMPLETADO);
// Busco recurso existente
var resultado = servicioBibliotecaPersonal.buscarRecursoEnBiblioteca(biblioteca.getId(), guardado.getId());
assertThat(resultado).isPresent();
assertThat(resultado.get().getRecurso().getId()).isEqualTo(guardado.getId());
// Busco recurso inexistente
var resultadoInexistente = servicioBibliotecaPersonal.buscarRecursoEnBiblioteca(biblioteca.getId(), 999L);
assertThat(resultadoInexistente).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