Commit e403fa55 by Rubén Ramírez

feat: [ServicioRecurso]:Implementada la función con su test de modificar recurso en el servicio

parent dc607392
......@@ -3,6 +3,7 @@ package com.ujaen.tfg.mangaffinity.servicios;
import com.ujaen.tfg.mangaffinity.entidades.Genero;
import com.ujaen.tfg.mangaffinity.entidades.Recurso;
import com.ujaen.tfg.mangaffinity.excepciones.RecursoNoExiste;
import com.ujaen.tfg.mangaffinity.repositorios.RepositorioRecurso;
import com.ujaen.tfg.mangaffinity.util.UtilString;
import jakarta.validation.Valid;
......@@ -56,5 +57,33 @@ public class ServicioRecursos {
return false;
}
@Transactional
public Recurso modificarRecurso(Long id, Recurso nuevosDatos) {
Recurso recursoExistente = repositorioRecurso.buscarPorId(id);
if (recursoExistente == null) {
throw new RecursoNoExiste();
}
if (nuevosDatos.getTitulo() != null) {
recursoExistente.setTitulo(nuevosDatos.getTitulo());
}
if (nuevosDatos.getDescripcion() != null) {
recursoExistente.setDescripcion(nuevosDatos.getDescripcion());
}
if (nuevosDatos.getFechaPublicacion() != null) {
recursoExistente.setFechaPublicacion(nuevosDatos.getFechaPublicacion());
}
if (nuevosDatos.getAutor() != null) {
recursoExistente.setAutor(nuevosDatos.getAutor());
}
if (nuevosDatos.getGeneros() != null ) {
recursoExistente.setGeneros(nuevosDatos.getGeneros());
}
return repositorioRecurso.modificarRecurso(recursoExistente);
}
}
......@@ -169,7 +169,43 @@ public class TestServicioRecursos {
assertThat(recursoBorrado).isNull();
}
@Test
@DirtiesContext
void testModificarRecurso() {
// Crear un recurso inicial
Recurso recursoOriginal = new Recurso("Título Original", "Descripción Original", LocalDate.of(2022, 5, 10), "Autor Original");
servicioRecursos.crearRecurso(recursoOriginal);
// Buscar el recurso creado para obtener su ID
List<Recurso> recursos = servicioRecursos.buscarRecursoPorTitulo("Título Original");
assertThat(recursos).isNotEmpty();
Recurso recursoGuardado = recursos.getFirst();
Long recursoId = recursoGuardado.getId();
assertThat(recursoId).isNotNull();
// Crear un objeto con algunos campos en null (solo modificamos la descripción)
Recurso nuevosDatos = new Recurso(null, "Descripción Modificada", null, null);
// Modificar el recurso
Recurso recursoModificado = servicioRecursos.modificarRecurso(recursoId, nuevosDatos);
// Verificar que los cambios se guardaron correctamente sin sobrescribir campos con null
assertThat(recursoModificado).isNotNull();
assertThat(recursoModificado.getId()).isEqualTo(recursoId);
assertThat(recursoModificado.getTitulo()).isEqualTo("Título Original"); // ✅ No se modificó
assertThat(recursoModificado.getDescripcion()).isEqualTo("Descripción Modificada"); // ✅ Se modificó
assertThat(recursoModificado.getFechaPublicacion()).isEqualTo(LocalDate.of(2022, 5, 10)); // ✅ No se modificó
assertThat(recursoModificado.getAutor()).isEqualTo("Autor Original"); // ✅ No se modificó
// Verificar que los datos en la BD siguen siendo los correctos
Recurso recursoFinal = servicioRecursos.buscarRecursoPorId(recursoId);
assertThat(recursoFinal).isNotNull();
assertThat(recursoFinal.getTitulo()).isEqualTo("Título Original");
assertThat(recursoFinal.getDescripcion()).isEqualTo("Descripción Modificada");
assertThat(recursoFinal.getFechaPublicacion()).isEqualTo(LocalDate.of(2022, 5, 10));
assertThat(recursoFinal.getAutor()).isEqualTo("Autor Original");
}
}
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