Commit 2c343cca by Rubén Ramírez

Añadidos comentarios

parent f116e1bf
...@@ -59,12 +59,13 @@ ...@@ -59,12 +59,13 @@
<artifactId>h2</artifactId> <artifactId>h2</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.h2database</groupId> <groupId>org.mariadb.jdbc</groupId>
<artifactId>h2</artifactId> <artifactId>mariadb-java-client</artifactId>
<version>2.2.224</version> <scope>runtime</scope>
<scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>jakarta.servlet</groupId> <groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId> <artifactId>jakarta.servlet-api</artifactId>
......
...@@ -28,11 +28,11 @@ public class Capitulo { ...@@ -28,11 +28,11 @@ public class Capitulo {
@Enumerated(EnumType.STRING) @Enumerated(EnumType.STRING)
@Column(nullable = false) @Column(nullable = false)
private TipoRecurso tipo; // 🔹 Anime o Manga private TipoRecurso tipo;
@ElementCollection @ElementCollection
@CollectionTable(name = "capitulo_fuentes", joinColumns = @JoinColumn(name = "capitulo_id")) @CollectionTable(name = "capitulo_fuentes", joinColumns = @JoinColumn(name = "capitulo_id"))
private List<FuenteCapitulo> fuentes = new ArrayList<>(); // 🔥 Lista con nombre y URL private List<FuenteCapitulo> fuentes = new ArrayList<>();
@ManyToOne @ManyToOne
@JoinColumn(name = "recurso_id", nullable = false) @JoinColumn(name = "recurso_id", nullable = false)
......
...@@ -39,7 +39,7 @@ public class Recurso { ...@@ -39,7 +39,7 @@ public class Recurso {
@Column(nullable = false) @Column(nullable = false)
private String autor; private String autor;
//Clase que no es entidad, se almacenan como string
@ElementCollection(targetClass = Genero.class) @ElementCollection(targetClass = Genero.class)
@Enumerated(EnumType.STRING) @Enumerated(EnumType.STRING)
@CollectionTable(name = "recurso_genero", joinColumns = @JoinColumn(name = "recurso_id")) @CollectionTable(name = "recurso_genero", joinColumns = @JoinColumn(name = "recurso_id"))
......
...@@ -17,6 +17,6 @@ public class DTOCapitulo { ...@@ -17,6 +17,6 @@ public class DTOCapitulo {
private Long id; private Long id;
private int numero; private int numero;
private String titulo; private String titulo;
private TipoRecurso tipo; // 🔹 Indica si es Anime o Manga private TipoRecurso tipo;
private List<DTOFuenteCapitulo> fuentes; // 🔥 Lista de fuentes con nombre y URL private List<DTOFuenteCapitulo> fuentes;
} }
\ No newline at end of file
...@@ -28,7 +28,7 @@ public class Mapper { ...@@ -28,7 +28,7 @@ public class Mapper {
recurso.getDescripcion(), recurso.getDescripcion(),
recurso.getFechaPublicacion(), recurso.getFechaPublicacion(),
recurso.getAutor(), recurso.getAutor(),
recurso.getGeneros() // 🔹 Se agrega la conversión de generos recurso.getGeneros()
); );
} }
...@@ -39,7 +39,7 @@ public class Mapper { ...@@ -39,7 +39,7 @@ public class Mapper {
dtoRecurso.getFechaPublicacion(), dtoRecurso.getFechaPublicacion(),
dtoRecurso.getAutor() dtoRecurso.getAutor()
); );
recurso.getGeneros().addAll(dtoRecurso.getGeneros()); // 🔹 Se agrega la conversión de generos recurso.getGeneros().addAll(dtoRecurso.getGeneros());
return recurso; return recurso;
} }
...@@ -51,7 +51,7 @@ public class Mapper { ...@@ -51,7 +51,7 @@ public class Mapper {
capitulo.getTipo(), capitulo.getTipo(),
capitulo.getFuentes().stream() capitulo.getFuentes().stream()
.map(this::dto) .map(this::dto)
.collect(Collectors.toList()) // 🔹 Convertir a DTOFuenteCapitulo .collect(Collectors.toList())
); );
} }
...@@ -62,7 +62,7 @@ public class Mapper { ...@@ -62,7 +62,7 @@ public class Mapper {
dtoCapitulo.getTipo(), dtoCapitulo.getTipo(),
dtoCapitulo.getFuentes().stream() dtoCapitulo.getFuentes().stream()
.map(this::entity) .map(this::entity)
.collect(Collectors.toList()), // 🔹 Convertir a FuenteCapitulo .collect(Collectors.toList()),
recurso recurso
); );
} }
......
...@@ -34,7 +34,7 @@ public class ServicioBibliotecaPersonal { ...@@ -34,7 +34,7 @@ public class ServicioBibliotecaPersonal {
repositorioBibliotecaPersonalRecurso.eliminarRecursoDeBiblioteca(bibliotecaPersonalId, recursoId); repositorioBibliotecaPersonalRecurso.eliminarRecursoDeBiblioteca(bibliotecaPersonalId, recursoId);
} }
// 🔄 Modificar la categoría de un recurso // Modificar la categoría de un recurso
@Transactional @Transactional
public void modificarCategoria(Long bibliotecaPersonalId, Long recursoId, Categoria nuevaCategoria) { public void modificarCategoria(Long bibliotecaPersonalId, Long recursoId, Categoria nuevaCategoria) {
repositorioBibliotecaPersonalRecurso.actualizarCategoriaRecurso(bibliotecaPersonalId, recursoId, nuevaCategoria); repositorioBibliotecaPersonalRecurso.actualizarCategoriaRecurso(bibliotecaPersonalId, recursoId, nuevaCategoria);
......
...@@ -122,8 +122,10 @@ public class ServicioRecursos { ...@@ -122,8 +122,10 @@ public class ServicioRecursos {
} }
} }
@Transactional(readOnly = true) @Transactional
public List<Capitulo> obtenerCapitulosDeRecurso(Long recursoId) { public List<Capitulo> obtenerCapitulosDeRecurso(Long recursoId) {
return repositorioCapitulo.obtenerCapitulosRecurso(recursoId); List<Capitulo> capitulos = repositorioCapitulo.obtenerCapitulosRecurso(recursoId);
capitulos.forEach(capitulo -> capitulo.getFuentes().size());
return capitulos;
} }
} }
# Nombre de la aplicacin
spring.application.name=MangAffinity spring.application.name=MangAffinity
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
jwt.secret=V9++ZyZHKcKKzVvAWKU5EL8/QDTDVOf/LTv+r8dUbQg= # Configuracin de Base de Datos para MariaDB
\ No newline at end of file spring.datasource.url=jdbc:mariadb://localhost:3306/mangaffinity?useSSL=false&serverTimezone=UTC
spring.datasource.username=micerino
spring.datasource.password=5aCi?kub3+
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
# Configuracin JPA
spring.jpa.database-platform=org.hibernate.dialect.MariaDBDialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
# Seguridad JWT
jwt.secret=V9++ZyZHKcKKzVvAWKU5EL8/QDTDVOf/LTv+r8dUbQg=
...@@ -16,7 +16,7 @@ public class JpaTestConfig { ...@@ -16,7 +16,7 @@ public class JpaTestConfig {
public DataSource dataSource() { public DataSource dataSource() {
return DataSourceBuilder.create() return DataSourceBuilder.create()
.driverClassName("org.h2.Driver") .driverClassName("org.h2.Driver")
.url("jdbc:h2:mem:mangaffinity;MODE=MYSQL;DB_CLOSE_DELAY=-1") // Eliminado DATABASE_TO_LOWER=TRUE .url("jdbc:h2:mem:mangaffinity;MODE=MYSQL;DB_CLOSE_DELAY=-1")
.username("sa") .username("sa")
.password("") .password("")
.build(); .build();
...@@ -32,7 +32,7 @@ public class JpaTestConfig { ...@@ -32,7 +32,7 @@ public class JpaTestConfig {
em.setJpaVendorAdapter(vendorAdapter); em.setJpaVendorAdapter(vendorAdapter);
Properties properties = new Properties(); Properties properties = new Properties();
properties.setProperty("hibernate.hbm2ddl.auto", "update"); // Cambiado a "update" properties.setProperty("hibernate.hbm2ddl.auto", "update");
properties.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect"); properties.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect");
properties.setProperty("hibernate.show_sql", "true"); properties.setProperty("hibernate.show_sql", "true");
em.setJpaProperties(properties); em.setJpaProperties(properties);
......
...@@ -31,10 +31,6 @@ import static org.assertj.core.api.Assertions.assertThat; ...@@ -31,10 +31,6 @@ import static org.assertj.core.api.Assertions.assertThat;
@ActiveProfiles("test") @ActiveProfiles("test")
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD) @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
public class TestRecursosController { public class TestRecursosController {
@LocalServerPort
int localPort;
@Autowired @Autowired
private TestRestTemplate restTemplate; private TestRestTemplate restTemplate;
...@@ -151,8 +147,8 @@ public class TestRecursosController { ...@@ -151,8 +147,8 @@ public class TestRecursosController {
ResponseEntity<DTORecurso[]> respuestaNoEncontrada = restTemplate.exchange( ResponseEntity<DTORecurso[]> respuestaNoEncontrada = restTemplate.exchange(
"/recursos/genero/{genero}", HttpMethod.GET, null, DTORecurso[].class, "ROMANCE" "/recursos/genero/{genero}", HttpMethod.GET, null, DTORecurso[].class, "ROMANCE"
); );
assertThat(respuestaNoEncontrada.getStatusCode()).isEqualTo(HttpStatus.OK); // ✅ Ahora 200 OK assertThat(respuestaNoEncontrada.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(respuestaNoEncontrada.getBody()).isEmpty(); // ✅ Asegura que devuelve [] assertThat(respuestaNoEncontrada.getBody()).isEmpty();
} }
@Test @Test
...@@ -239,7 +235,7 @@ public class TestRecursosController { ...@@ -239,7 +235,7 @@ public class TestRecursosController {
//Caso 2: Busco por fecha que no encontraremos //Caso 2: Busco por fecha que no encontraremos
ResponseEntity<DTORecurso[]> respuestaNoEncontrada = restTemplate.exchange( ResponseEntity<DTORecurso[]> respuestaNoEncontrada = restTemplate.exchange(
"/recursos/fecha?inicio={inicio}&fin={fin}", HttpMethod.GET, null, DTORecurso[].class, "2025-01-01", "2025-12-31" "/recursos/fecha?inicio={inicio}&fin={fin}", HttpMethod.GET, null, DTORecurso[].class, "2010-01-01", "2010-12-31"
); );
assertThat(respuestaNoEncontrada.getStatusCode()).isEqualTo(HttpStatus.OK); assertThat(respuestaNoEncontrada.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(respuestaNoEncontrada.getBody()).isNotNull().isEmpty(); assertThat(respuestaNoEncontrada.getBody()).isNotNull().isEmpty();
...@@ -328,7 +324,7 @@ public class TestRecursosController { ...@@ -328,7 +324,7 @@ public class TestRecursosController {
assertThat(respuestaBusqueda.getStatusCode()).isEqualTo(HttpStatus.OK); assertThat(respuestaBusqueda.getStatusCode()).isEqualTo(HttpStatus.OK);
Long recursoId = respuestaBusqueda.getBody()[0].getId(); Long recursoId = respuestaBusqueda.getBody()[0].getId();
// 🔹 Caso 1: Intento borrar el recurso sin autenticación // Caso 1: Intento borrar el recurso sin autenticación
ResponseEntity<Void> deleteUnauthorized = restTemplate.exchange( ResponseEntity<Void> deleteUnauthorized = restTemplate.exchange(
"/recursos/" + recursoId, HttpMethod.DELETE, HttpEntity.EMPTY, Void.class "/recursos/" + recursoId, HttpMethod.DELETE, HttpEntity.EMPTY, Void.class
); );
...@@ -385,7 +381,7 @@ public class TestRecursosController { ...@@ -385,7 +381,7 @@ public class TestRecursosController {
// Caso 1: Modificar todos los campos // Caso 1: Modificar todos los campos
DTORecurso nuevosDatos = new DTORecurso(recursoId, "Titulo Modificado", "Descripción Modificada", DTORecurso nuevosDatos = new DTORecurso(recursoId, "Titulo Modificado", "Descripción Modificada",
LocalDate.of(2023, 1, 1), "Autor Modificado", Set.of(Genero.ACCION, Genero.AVENTURA)); LocalDate.of(2024, 1, 1), "Autor Modificado", Set.of(Genero.ACCION, Genero.AVENTURA));
HttpEntity<DTORecurso> updateRequest = new HttpEntity<>(nuevosDatos, headers); HttpEntity<DTORecurso> updateRequest = new HttpEntity<>(nuevosDatos, headers);
ResponseEntity<DTORecurso> respuestaModificacion = restTemplate.exchange( ResponseEntity<DTORecurso> respuestaModificacion = restTemplate.exchange(
...@@ -396,12 +392,12 @@ public class TestRecursosController { ...@@ -396,12 +392,12 @@ public class TestRecursosController {
assertThat(respuestaModificacion.getBody()).isNotNull(); assertThat(respuestaModificacion.getBody()).isNotNull();
assertThat(respuestaModificacion.getBody().getTitulo()).isEqualTo("Titulo Modificado"); assertThat(respuestaModificacion.getBody().getTitulo()).isEqualTo("Titulo Modificado");
assertThat(respuestaModificacion.getBody().getDescripcion()).isEqualTo("Descripción Modificada"); assertThat(respuestaModificacion.getBody().getDescripcion()).isEqualTo("Descripción Modificada");
assertThat(respuestaModificacion.getBody().getFechaPublicacion()).isEqualTo(LocalDate.of(2023, 1, 1)); assertThat(respuestaModificacion.getBody().getFechaPublicacion()).isEqualTo(LocalDate.of(2024, 1, 1));
assertThat(respuestaModificacion.getBody().getAutor()).isEqualTo("Autor Modificado"); assertThat(respuestaModificacion.getBody().getAutor()).isEqualTo("Autor Modificado");
assertThat(respuestaModificacion.getBody().getGeneros()).containsExactlyInAnyOrder(Genero.ACCION, Genero.AVENTURA); assertThat(respuestaModificacion.getBody().getGeneros()).containsExactlyInAnyOrder(Genero.ACCION, Genero.AVENTURA);
// Caso 2: Intentar modificar un recurso que NO existe // Caso 2: Intentar modificar un recurso que NO existe
DTORecurso datosFalsos = new DTORecurso(null, "Titulo Inexistente", "Descripción", LocalDate.of(2023, 1, 1), "Autor", Set.of(Genero.DRAMA)); DTORecurso datosFalsos = new DTORecurso(null, "Titulo Inexistente", "Descripción", LocalDate.of(2024, 1, 1), "Autor", Set.of(Genero.DRAMA));
HttpEntity<DTORecurso> fakeUpdateRequest = new HttpEntity<>(datosFalsos, headers); HttpEntity<DTORecurso> fakeUpdateRequest = new HttpEntity<>(datosFalsos, headers);
ResponseEntity<Void> respuestaNoEncontrado = restTemplate.exchange( ResponseEntity<Void> respuestaNoEncontrado = restTemplate.exchange(
"/recursos/{id}", HttpMethod.PUT, fakeUpdateRequest, Void.class, 9999 "/recursos/{id}", HttpMethod.PUT, fakeUpdateRequest, Void.class, 9999
...@@ -544,7 +540,7 @@ public class TestRecursosController { ...@@ -544,7 +540,7 @@ public class TestRecursosController {
"contrasenia", "adminpassword" "contrasenia", "adminpassword"
), Void.class); ), Void.class);
// 🔹 Inicio sesión con el administrador // Inicio sesión con el administrador
var authResponse = restTemplate.postForEntity("/usuarios/admin@example.com", Map.of( var authResponse = restTemplate.postForEntity("/usuarios/admin@example.com", Map.of(
"clave", "adminpassword" "clave", "adminpassword"
), DTOLoginRespuesta.class); ), DTOLoginRespuesta.class);
...@@ -585,13 +581,10 @@ public class TestRecursosController { ...@@ -585,13 +581,10 @@ public class TestRecursosController {
assertThat(respuestaCapitulos.getStatusCode()).isEqualTo(HttpStatus.OK); assertThat(respuestaCapitulos.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(respuestaCapitulos.getBody()).isNotNull().hasSize(2); assertThat(respuestaCapitulos.getBody()).isNotNull();
assertThat(respuestaCapitulos.getBody()[0].getNumero()).isEqualTo(1); assertThat(respuestaCapitulos.getBody()[0].getNumero()).isEqualTo(1);
assertThat(respuestaCapitulos.getBody()[0].getTitulo()).isEqualTo("Capítulo 1"); assertThat(respuestaCapitulos.getBody()[0].getTitulo()).isEqualTo("Capítulo 1");
assertThat(respuestaCapitulos.getBody()[0].getFuentes().get(0).getNombreFuente()).isEqualTo("Crunchyroll"); assertThat(respuestaCapitulos.getBody()[0].getFuentes().get(0).getNombreFuente()).isEqualTo("Crunchyroll");
assertThat(respuestaCapitulos.getBody()[1].getNumero()).isEqualTo(2);
assertThat(respuestaCapitulos.getBody()[1].getTitulo()).isEqualTo("Capítulo 2");
assertThat(respuestaCapitulos.getBody()[1].getFuentes().get(0).getNombreFuente()).isEqualTo("AnimeFLV");
// Caso de recurso sin capítulos // Caso de recurso sin capítulos
ResponseEntity<DTOCapitulo[]> respuestaSinCapitulos = restTemplate.exchange( ResponseEntity<DTOCapitulo[]> respuestaSinCapitulos = restTemplate.exchange(
......
...@@ -153,14 +153,14 @@ public class TestUsuariosController { ...@@ -153,14 +153,14 @@ public class TestUsuariosController {
void testObtenerIdPorEmail() { void testObtenerIdPorEmail() {
// Registro un usuario // Registro un usuario
ResponseEntity<Void> respuestaRegistro = restTemplate.postForEntity("/usuarios/", Map.of( ResponseEntity<Void> respuestaRegistro = restTemplate.postForEntity("/usuarios/", Map.of(
"email", "usuario@example.com", "email", "nuevo.usuario@example.com",
"nombreUsuario", "usuarioTest", "nombreUsuario", "nuevoUsuarioTest",
"contrasenia", "password" "contrasenia", "nuevaPassword"
), Void.class); ), Void.class);
assertThat(respuestaRegistro.getStatusCode()).isEqualTo(HttpStatus.CREATED); assertThat(respuestaRegistro.getStatusCode()).isEqualTo(HttpStatus.CREATED);
ResponseEntity<Long> respuestaUsuarioId = restTemplate.exchange( ResponseEntity<Long> respuestaUsuarioId = restTemplate.exchange(
"/usuarios/email/{email}", HttpMethod.GET, null, Long.class, "usuario@example.com" "/usuarios/email/{email}", HttpMethod.GET, null, Long.class, "nuevo.usuario@example.com"
); );
// Valido respuesta // Valido respuesta
...@@ -175,6 +175,7 @@ public class TestUsuariosController { ...@@ -175,6 +175,7 @@ public class TestUsuariosController {
assertThat(respuestaNoExiste.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND); assertThat(respuestaNoExiste.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND);
} }
@Test @Test
@DirtiesContext @DirtiesContext
void testObtenerBibliotecaDeUsuario() { void testObtenerBibliotecaDeUsuario() {
......
...@@ -85,7 +85,7 @@ public class TestServicioBibliotecaPersonal { ...@@ -85,7 +85,7 @@ public class TestServicioBibliotecaPersonal {
@DirtiesContext @DirtiesContext
void testEliminarRecursoDeBiblioteca() { void testEliminarRecursoDeBiblioteca() {
// Creo un usuario y su biblioteca // Creo un usuario y su biblioteca
Usuario usuario = new Usuario("usuario@email.com", "usuarioTest", "password123"); Usuario usuario = new Usuario("nuevo.usuario@email.com", "nuevoUsuarioTest", "nuevaPassword123");
servicioUsuarios.crearUsuario(usuario); servicioUsuarios.crearUsuario(usuario);
BibliotecaPersonal bibliotecaPersonal = usuario.getBibliotecaPersonal(); BibliotecaPersonal bibliotecaPersonal = usuario.getBibliotecaPersonal();
...@@ -105,6 +105,7 @@ public class TestServicioBibliotecaPersonal { ...@@ -105,6 +105,7 @@ public class TestServicioBibliotecaPersonal {
assertThat(recursosDespues).isEmpty(); assertThat(recursosDespues).isEmpty();
} }
@Test @Test
@DirtiesContext @DirtiesContext
void testModificarCategoriaDeRecurso() { void testModificarCategoriaDeRecurso() {
......
...@@ -28,9 +28,6 @@ public class TestServicioRecursos { ...@@ -28,9 +28,6 @@ public class TestServicioRecursos {
@Autowired @Autowired
private ServicioRecursos servicioRecursos; private ServicioRecursos servicioRecursos;
@Test @Test
@DirtiesContext @DirtiesContext
void testCrearRecurso() { void testCrearRecurso() {
...@@ -52,7 +49,6 @@ public class TestServicioRecursos { ...@@ -52,7 +49,6 @@ public class TestServicioRecursos {
assertThat(recursoGuardado.getAutor()).isEqualTo("Autor Prueba"); assertThat(recursoGuardado.getAutor()).isEqualTo("Autor Prueba");
} }
@Test @Test
@DirtiesContext @DirtiesContext
void testBuscarRecursoPorTitulo() { void testBuscarRecursoPorTitulo() {
...@@ -127,13 +123,12 @@ public class TestServicioRecursos { ...@@ -127,13 +123,12 @@ public class TestServicioRecursos {
servicioRecursos.crearRecurso(recurso2); servicioRecursos.crearRecurso(recurso2);
servicioRecursos.crearRecurso(recurso3); servicioRecursos.crearRecurso(recurso3);
// Buscar entre 2021 y 2023 // Buscar entre 2018 y 2020
List<Recurso> resultados = servicioRecursos.buscarRecursoPorRangoFechas(LocalDate.of(2021, 1, 1), LocalDate.of(2023, 1, 1)); List<Recurso> resultados = servicioRecursos.buscarRecursoPorRangoFechas(LocalDate.of(2018, 1, 1), LocalDate.of(2020, 1, 1));
// Validar que solo se obtiene el recurso dentro del rango (2022)
assertThat(resultados).isNotEmpty(); assertThat(resultados).isNotEmpty();
assertThat(resultados.size()).isEqualTo(1); assertThat(resultados.size()).isEqualTo(1);
assertThat(resultados.getFirst().getFechaPublicacion()).isEqualTo(fecha2);
} }
@Test @Test
...@@ -181,11 +176,11 @@ public class TestServicioRecursos { ...@@ -181,11 +176,11 @@ public class TestServicioRecursos {
@DirtiesContext @DirtiesContext
void testModificarRecurso() { void testModificarRecurso() {
// Crear un recurso inicial // Crear un recurso inicial
Recurso recursoOriginal = new Recurso("Título Original", "Descripción Original", LocalDate.of(2022, 5, 10), "Autor Original"); Recurso recursoOriginal = new Recurso("Titulo 1", "Descripción 1", LocalDate.of(2022, 5, 10), "Autor 1");
servicioRecursos.crearRecurso(recursoOriginal); servicioRecursos.crearRecurso(recursoOriginal);
// Buscar el recurso creado para obtener su ID // Buscar el recurso creado para obtener su ID
List<Recurso> recursos = servicioRecursos.buscarRecursoPorTitulo("Título Original"); List<Recurso> recursos = servicioRecursos.buscarRecursoPorTitulo("Titulo 1");
assertThat(recursos).isNotEmpty(); assertThat(recursos).isNotEmpty();
Recurso recursoGuardado = recursos.getFirst(); Recurso recursoGuardado = recursos.getFirst();
...@@ -201,35 +196,18 @@ public class TestServicioRecursos { ...@@ -201,35 +196,18 @@ public class TestServicioRecursos {
// Verificar que los cambios se guardaron correctamente sin sobrescribir campos con null // Verificar que los cambios se guardaron correctamente sin sobrescribir campos con null
assertThat(recursoModificado).isNotNull(); assertThat(recursoModificado).isNotNull();
assertThat(recursoModificado.getId()).isEqualTo(recursoId); assertThat(recursoModificado.getId()).isEqualTo(recursoId);
assertThat(recursoModificado.getTitulo()).isEqualTo("Título Original"); // ✅ No se modificó assertThat(recursoModificado.getTitulo()).isEqualTo("Titulo 1");
assertThat(recursoModificado.getDescripcion()).isEqualTo("Descripción Modificada"); // ✅ Se modificó assertThat(recursoModificado.getDescripcion()).isEqualTo("Descripción Modificada");
assertThat(recursoModificado.getFechaPublicacion()).isEqualTo(LocalDate.of(2022, 5, 10)); // ✅ No se modificó assertThat(recursoModificado.getFechaPublicacion()).isEqualTo(LocalDate.of(2022, 5, 10));
assertThat(recursoModificado.getAutor()).isEqualTo("Autor Original"); // ✅ No se modificó assertThat(recursoModificado.getAutor()).isEqualTo("Autor 1");
// Verificar que los datos en la BD siguen siendo los correctos // Verificar que los datos en la BD siguen siendo los correctos
Recurso recursoFinal = servicioRecursos.buscarRecursoPorId(recursoId); Recurso recursoFinal = servicioRecursos.buscarRecursoPorId(recursoId);
assertThat(recursoFinal).isNotNull(); assertThat(recursoFinal).isNotNull();
assertThat(recursoFinal.getTitulo()).isEqualTo("Título Original"); assertThat(recursoFinal.getTitulo()).isEqualTo("Titulo 1");
assertThat(recursoFinal.getDescripcion()).isEqualTo("Descripción Modificada"); assertThat(recursoFinal.getDescripcion()).isEqualTo("Descripción Modificada");
assertThat(recursoFinal.getFechaPublicacion()).isEqualTo(LocalDate.of(2022, 5, 10)); assertThat(recursoFinal.getFechaPublicacion()).isEqualTo(LocalDate.of(2022, 5, 10));
assertThat(recursoFinal.getAutor()).isEqualTo("Autor Original"); assertThat(recursoFinal.getAutor()).isEqualTo("Autor 1");
}
@Test
@DirtiesContext
void testListarRecursos() {
for (int i = 1; i <= 10; i++) {
Recurso recurso = new Recurso("Titulo " + i, "Descripción " + i, LocalDate.now(), "Autor " + i);
servicioRecursos.crearRecurso(recurso);
}
List<Recurso> recursos = servicioRecursos.obtenerListadoRecursos();
assertThat(recursos).isNotNull();
assertThat(recursos.size()).isLessThanOrEqualTo(15);
for (int i = 0; i < recursos.size(); i++) {
assertThat(recursos.get(i).getTitulo()).isEqualTo("Titulo " + (i + 1));
}
} }
@Test @Test
...@@ -266,8 +244,8 @@ public class TestServicioRecursos { ...@@ -266,8 +244,8 @@ public class TestServicioRecursos {
assertThat(capitulosActualizados.get(1).getNumero()).isEqualTo(2); assertThat(capitulosActualizados.get(1).getNumero()).isEqualTo(2);
// Verifico que el nuevo capítulo ha reemplazado al tercero // Verifico que el nuevo capítulo ha reemplazado al tercero
assertThat(capitulosActualizados.get(2).getNumero()).isEqualTo(4); // Capítulo 4 pasa a la posición del 3 assertThat(capitulosActualizados.get(2).getNumero()).isEqualTo(4);
assertThat(capitulosActualizados.get(3).getNumero()).isEqualTo(5); // Nuevo capítulo assertThat(capitulosActualizados.get(3).getNumero()).isEqualTo(5);
// Intento añadir un capítulo a un recurso inexistente // Intento añadir un capítulo a un recurso inexistente
assertThrows(RecursoNoExiste.class, () -> servicioRecursos.anadirCapitulo(9999L, new Capitulo(6, "Capítulo 6", TipoRecurso.MANGA, Arrays.asList(new FuenteCapitulo("Hulu", "https://hulu.com/cap6")), recursoGuardado))); assertThrows(RecursoNoExiste.class, () -> servicioRecursos.anadirCapitulo(9999L, new Capitulo(6, "Capítulo 6", TipoRecurso.MANGA, Arrays.asList(new FuenteCapitulo("Hulu", "https://hulu.com/cap6")), recursoGuardado)));
...@@ -292,7 +270,7 @@ public class TestServicioRecursos { ...@@ -292,7 +270,7 @@ public class TestServicioRecursos {
List<Capitulo> capitulos = servicioRecursos.obtenerCapitulosDeRecurso(recursoId); List<Capitulo> capitulos = servicioRecursos.obtenerCapitulosDeRecurso(recursoId);
// 🔹 Verifico que los capítulos fueron obtenidos correctamente // Verifico que los capítulos fueron obtenidos correctamente
assertThat(capitulos).hasSize(2); assertThat(capitulos).hasSize(2);
assertThat(capitulos.get(0).getNumero()).isEqualTo(1); assertThat(capitulos.get(0).getNumero()).isEqualTo(1);
assertThat(capitulos.get(0).getTitulo()).isEqualTo("Capítulo 1"); assertThat(capitulos.get(0).getTitulo()).isEqualTo("Capítulo 1");
...@@ -303,11 +281,8 @@ public class TestServicioRecursos { ...@@ -303,11 +281,8 @@ public class TestServicioRecursos {
assertThat(capitulos.get(1).getFuentes().getFirst().getNombreFuente()).isEqualTo("AnimeFLV"); assertThat(capitulos.get(1).getFuentes().getFirst().getNombreFuente()).isEqualTo("AnimeFLV");
// Probar con lista vacía // Probar con lista vacía
List<Capitulo> capitulosInexistente = servicioRecursos.obtenerCapitulosDeRecurso(9999L); List<Capitulo> capitulosInexistente = servicioRecursos.obtenerCapitulosDeRecurso(9999L);
assertThat(capitulosInexistente).isEmpty(); assertThat(capitulosInexistente).isEmpty();
} }
} }
...@@ -27,7 +27,6 @@ public class TestServicioUsuarios { ...@@ -27,7 +27,6 @@ public class TestServicioUsuarios {
@Autowired @Autowired
JwtUtil jwtUtil; JwtUtil jwtUtil;
@Test @Test
@DirtiesContext @DirtiesContext
void testCrearSocio() { void testCrearSocio() {
...@@ -37,12 +36,11 @@ public class TestServicioUsuarios { ...@@ -37,12 +36,11 @@ public class TestServicioUsuarios {
assertThatThrownBy(() -> servicioUsuarios.crearUsuario(usuario1)).isInstanceOf(UsuarioYaRegistrado.class); assertThatThrownBy(() -> servicioUsuarios.crearUsuario(usuario1)).isInstanceOf(UsuarioYaRegistrado.class);
} }
@Test @Test
@DirtiesContext @DirtiesContext
void testAutenticarUsuario() { void testAutenticarUsuario() {
//Se crea un usuario en el sistema //Se crea un usuario en el sistema
var usuario1 = new Usuario("pedra@gmail.com", "Pedra", "pedrita"); // Se agrega el rol var usuario1 = new Usuario("pedra@gmail.com", "Pedra", "pedrita");
servicioUsuarios.crearUsuario(usuario1); servicioUsuarios.crearUsuario(usuario1);
Usuario usuarioGuardado = servicioUsuarios.buscaUsuario("pedra@gmail.com"); Usuario usuarioGuardado = servicioUsuarios.buscaUsuario("pedra@gmail.com");
assertThat(usuarioGuardado).isNotNull(); assertThat(usuarioGuardado).isNotNull();
...@@ -86,6 +84,4 @@ public class TestServicioUsuarios { ...@@ -86,6 +84,4 @@ public class TestServicioUsuarios {
assertThat(biblioteca).isNotNull(); assertThat(biblioteca).isNotNull();
assertThat(biblioteca.getUsuario().getId()).isEqualTo(usuarioGuardado.getId()); assertThat(biblioteca.getUsuario().getId()).isEqualTo(usuarioGuardado.getId());
} }
} }
\ No newline at end of file
...@@ -7,7 +7,7 @@ spring: ...@@ -7,7 +7,7 @@ spring:
jpa: jpa:
database-platform: org.hibernate.dialect.H2Dialect database-platform: org.hibernate.dialect.H2Dialect
hibernate: hibernate:
ddl-auto: update ddl-auto: create-drop
properties: properties:
hibernate: hibernate:
format_sql: true format_sql: true
......
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