Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Rubén Ramírez
/
MangAffinity
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
6e80b2d4
authored
May 11, 2025
by
Rubén Ramírez
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
feat: [TestServicioSeguimiento]: Testeadas las funciones para la red social
parent
1023e0e5
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
153 additions
and
0 deletions
src/test/java/com/ujaen/tfg/mangaffinity/servicios/TestServicioSeguimiento.java
src/test/java/com/ujaen/tfg/mangaffinity/servicios/TestServicioSeguimiento.java
0 → 100644
View file @
6e80b2d4
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.Usuario
;
import
com.ujaen.tfg.mangaffinity.excepciones.SeguimientoExiste
;
import
com.ujaen.tfg.mangaffinity.excepciones.SeguimientoNoExiste
;
import
com.ujaen.tfg.mangaffinity.excepciones.UsuarioNoExiste
;
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.util.List
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
import
static
org
.
junit
.
jupiter
.
api
.
Assertions
.*;
@SpringBootTest
(
classes
=
{
MangAffinityApplication
.
class
,
JpaTestConfig
.
class
},
webEnvironment
=
SpringBootTest
.
WebEnvironment
.
RANDOM_PORT
)
@ActiveProfiles
(
"test"
)
@DirtiesContext
(
classMode
=
DirtiesContext
.
ClassMode
.
AFTER_EACH_TEST_METHOD
)
public
class
TestServicioSeguimiento
{
@Autowired
private
ServicioSeguimiento
servicioSeguimiento
;
@Autowired
private
ServicioUsuarios
servicioUsuarios
;
@Test
@DirtiesContext
void
testSeguir
()
{
// Creo usuarios de prueba
Usuario
juan
=
new
Usuario
(
"juan@test.com"
,
"juan"
,
"clave123"
);
Usuario
pedro
=
new
Usuario
(
"pedro@test.com"
,
"pedro"
,
"clave456"
);
servicioUsuarios
.
crearUsuario
(
juan
);
servicioUsuarios
.
crearUsuario
(
pedro
);
// Caso 1: Seguir con éxito
assertDoesNotThrow
(()
->
servicioSeguimiento
.
seguir
(
"juan"
,
"pedro"
));
// Verifico que pedro aparece en la lista de seguidos por juan
List
<
Usuario
>
seguidos
=
servicioSeguimiento
.
obtenerSeguidos
(
"juan"
);
assertThat
(
seguidos
).
extracting
(
Usuario:
:
getNombreUsuario
).
contains
(
"pedro"
);
// Verifico que juan aparece en la lista de seguidores de pedro
List
<
Usuario
>
seguidores
=
servicioSeguimiento
.
obtenerSeguidores
(
"pedro"
);
assertThat
(
seguidores
).
extracting
(
Usuario:
:
getNombreUsuario
).
contains
(
"juan"
);
// Caso 2: Intentar seguirse a sí mismo
Exception
ex
=
assertThrows
(
IllegalArgumentException
.
class
,
()
->
servicioSeguimiento
.
seguir
(
"juan"
,
"juan"
));
assertThat
(
ex
.
getMessage
()).
isEqualTo
(
"No puedes seguirte a ti mismo."
);
// Caso 3: Intentar seguir a un usuario inexistente
Exception
ex2
=
assertThrows
(
UsuarioNoExiste
.
class
,
()
->
servicioSeguimiento
.
seguir
(
"juan"
,
"noexiste"
));
// Caso 4: Intentar seguir de nuevo al mismo usuario (ya existe)
Exception
ex3
=
assertThrows
(
SeguimientoExiste
.
class
,
()
->
servicioSeguimiento
.
seguir
(
"juan"
,
"pedro"
));
}
@Test
@DirtiesContext
void
testDejarDeSeguir
()
{
// Creo usuarios
Usuario
juan
=
new
Usuario
(
"juan@test.com"
,
"juan"
,
"clave123"
);
Usuario
pedro
=
new
Usuario
(
"pedro@test.com"
,
"pedro"
,
"clave456"
);
Usuario
maria
=
new
Usuario
(
"maria@test.com"
,
"maria"
,
"clave789"
);
servicioUsuarios
.
crearUsuario
(
juan
);
servicioUsuarios
.
crearUsuario
(
pedro
);
servicioUsuarios
.
crearUsuario
(
maria
);
// Caso 1: seguimiento existente -> dejar de seguir
servicioSeguimiento
.
seguir
(
"juan"
,
"pedro"
);
assertThat
(
servicioSeguimiento
.
estaSiguiendo
(
"juan"
,
"pedro"
)).
isTrue
();
assertDoesNotThrow
(()
->
servicioSeguimiento
.
dejarDeSeguir
(
"juan"
,
"pedro"
));
assertThat
(
servicioSeguimiento
.
estaSiguiendo
(
"juan"
,
"pedro"
)).
isFalse
();
// Caso 2: dejar de seguir cuando no existe relación
Exception
ex1
=
assertThrows
(
SeguimientoNoExiste
.
class
,
()
->
servicioSeguimiento
.
dejarDeSeguir
(
"juan"
,
"pedro"
));
// Caso 3: usuario seguidor no existe
Exception
ex2
=
assertThrows
(
UsuarioNoExiste
.
class
,
()
->
servicioSeguimiento
.
dejarDeSeguir
(
"noexiste"
,
"maria"
));
// Caso 4: usuario seguido no existe
Exception
ex3
=
assertThrows
(
UsuarioNoExiste
.
class
,
()
->
servicioSeguimiento
.
dejarDeSeguir
(
"juan"
,
"noexiste"
));
}
@Test
@DirtiesContext
void
testObtenerSeguidos
()
{
// Creo usuarios
Usuario
juan
=
new
Usuario
(
"juan@test.com"
,
"juan"
,
"clave123"
);
Usuario
pedro
=
new
Usuario
(
"pedro@test.com"
,
"pedro"
,
"clave456"
);
Usuario
maria
=
new
Usuario
(
"maria@test.com"
,
"maria"
,
"clave789"
);
servicioUsuarios
.
crearUsuario
(
juan
);
servicioUsuarios
.
crearUsuario
(
pedro
);
servicioUsuarios
.
crearUsuario
(
maria
);
// Caso 1: juan sigue a pedro y maria
servicioSeguimiento
.
seguir
(
"juan"
,
"pedro"
);
servicioSeguimiento
.
seguir
(
"juan"
,
"maria"
);
List
<
Usuario
>
seguidos
=
servicioSeguimiento
.
obtenerSeguidos
(
"juan"
);
assertThat
(
seguidos
).
extracting
(
Usuario:
:
getNombreUsuario
).
containsExactlyInAnyOrder
(
"pedro"
,
"maria"
);
// Caso 2: usuario que existe pero no sigue a nadie
List
<
Usuario
>
seguidosMaria
=
servicioSeguimiento
.
obtenerSeguidos
(
"maria"
);
assertThat
(
seguidosMaria
).
isEmpty
();
// Caso 3: usuario no existe
assertThrows
(
UsuarioNoExiste
.
class
,
()
->
servicioSeguimiento
.
obtenerSeguidos
(
"inexistente"
));
}
@Test
@DirtiesContext
void
testEstaSiguiendo
()
{
// Creo usuarios
Usuario
juan
=
new
Usuario
(
"juan@test.com"
,
"juan"
,
"clave123"
);
Usuario
pedro
=
new
Usuario
(
"pedro@test.com"
,
"pedro"
,
"clave456"
);
Usuario
maria
=
new
Usuario
(
"maria@test.com"
,
"maria"
,
"clave789"
);
servicioUsuarios
.
crearUsuario
(
juan
);
servicioUsuarios
.
crearUsuario
(
pedro
);
servicioUsuarios
.
crearUsuario
(
maria
);
// Caso 1: juan sigue a pedro
servicioSeguimiento
.
seguir
(
"juan"
,
"pedro"
);
boolean
resultado1
=
servicioSeguimiento
.
estaSiguiendo
(
"juan"
,
"pedro"
);
assertEquals
(
true
,
resultado1
);
// Caso 2: juan NO sigue a maria
boolean
resultado2
=
servicioSeguimiento
.
estaSiguiendo
(
"juan"
,
"maria"
);
assertEquals
(
false
,
resultado2
);
// Caso 3: usuario seguidor no existe
assertThrows
(
UsuarioNoExiste
.
class
,
()
->
{
servicioSeguimiento
.
estaSiguiendo
(
"noexiste"
,
"pedro"
);
});
// Caso 4: usuario seguido no existe
assertThrows
(
UsuarioNoExiste
.
class
,
()
->
{
servicioSeguimiento
.
estaSiguiendo
(
"juan"
,
"noexiste"
);
});
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment