Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Alvaro Ordóñez Romero
/
DAE-aha00026-aor00039
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
818150be
authored
Dec 18, 2023
by
Alvaro Ordóñez Romero
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Modificaciones para funcionamiento de tests
parent
c9bfc1e0
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
132 additions
and
30 deletions
src/main/java/com/carpooling/carpoolingaoraha/entidades/Reserva.java
src/main/java/com/carpooling/carpoolingaoraha/repositorios/SolicitudRepository.java
src/main/java/com/carpooling/carpoolingaoraha/rest/ControladorREST.java
src/main/java/com/carpooling/carpoolingaoraha/services/ServicioCarPooling.java
src/test/java/com/carpooling/carpoolingaoraha/ControladorRESTEST/ControladorRESTTEST.java
src/test/java/com/carpooling/carpoolingaoraha/services/ServicioCarPoolingTest.java
src/main/java/com/carpooling/carpoolingaoraha/entidades/Reserva.java
View file @
818150be
...
...
@@ -44,11 +44,18 @@ public class Reserva {
@Transient
ServicioCarPooling
sistema
;
@Transient
private
String
origen
;
@Transient
private
String
destino
;
public
Reserva
(){
this
.
pasajeros
=
new
ArrayList
<
String
>();
}
public
Reserva
(
Usuario
conductor
,
String
origen
,
String
destino
,
Date
fechaSalida
,
int
nAsientos
,
int
precioAsiento
)
{
this
.
conductor
=
conductor
;
this
.
origen
=
origen
;
this
.
destino
=
destino
;
this
.
idReserva
=
++
incrementaReserva
;
this
.
numPasajeros
=
nAsientos
;
this
.
viaje
=
new
Viaje
(
origen
,
destino
,
fechaSalida
,
nAsientos
,
precioAsiento
,
this
.
idReserva
);
...
...
@@ -59,6 +66,17 @@ public class Reserva {
this
.
reservaConcluida
=
false
;
anadirReserva
(
this
);
}
public
Reserva
(
Usuario
conductor
,
String
origen
,
String
destino
,
int
numAsientos
,
int
precioAsiento
,
Date
fechaSalida
)
{
this
.
conductor
=
conductor
;
this
.
idReserva
=
++
incrementaReserva
;
this
.
origen
=
origen
;
this
.
destino
=
destino
;
this
.
numPasajeros
=
numAsientos
;
this
.
viaje
=
new
Viaje
(
origen
,
destino
,
fechaSalida
,
numAsientos
,
precioAsiento
,
this
.
idReserva
);
this
.
puntuacion
=
0
;
this
.
pasajeros
=
new
ArrayList
<
String
>();
this
.
reservaConcluida
=
false
;
}
public
void
anadirReserva
(
Reserva
res
){
this
.
sistema
.
listarReservas
().
add
(
res
);
...
...
@@ -153,4 +171,5 @@ public class Reserva {
}
src/main/java/com/carpooling/carpoolingaoraha/repositorios/SolicitudRepository.java
View file @
818150be
...
...
@@ -25,8 +25,8 @@ public class SolicitudRepository{
}
@CacheEvict
(
value
=
"solicitudes"
,
key
=
"#solicitud.id"
)
public
void
guardar
(
Solicitud
S
){
em
.
persist
(
S
);
public
void
guardar
(
Solicitud
u
){
em
.
persist
(
u
);
}
@CacheEvict
(
value
=
"solicitudes"
,
key
=
"#solicitud.id"
)
...
...
src/main/java/com/carpooling/carpoolingaoraha/rest/ControladorREST.java
View file @
818150be
...
...
@@ -16,6 +16,7 @@ import java.text.ParseException;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Optional
;
@RestController
...
...
@@ -68,12 +69,24 @@ public class ControladorREST {
@PutMapping
(
"/usuarios/modificar/{dni}"
)
ResponseEntity
<
DTOUsuario
>
actualizarCliente
(
@PathVariable
String
dni
,
@RequestBody
Usuario
usuarioModificad
o
@RequestBody
Map
<
String
,
Object
>
datosUsuari
o
)
{
Optional
<
Usuario
>
usuarioExistente
=
servicioCarPooling
.
verUsuario
(
dni
);
return
usuarioExistente
.
map
(
usuario
->
{
usuario
.
setNombre
(
usuarioModificado
.
getNombre
());
usuario
.
setApellidos
(
usuarioModificado
.
getApellidos
());
// Verificar si el nombre y el apellido están presentes en la solicitud
if
(
datosUsuario
.
containsKey
(
"nombre"
))
{
usuario
.
setNombre
((
String
)
datosUsuario
.
get
(
"nombre"
));
}
if
(
datosUsuario
.
containsKey
(
"apellido"
))
{
usuario
.
setApellidos
((
String
)
datosUsuario
.
get
(
"apellido"
));
}
if
(
datosUsuario
.
containsKey
(
"nuevoEmail"
))
{
usuario
.
setNombre
((
String
)
datosUsuario
.
get
(
"nuevoEmail"
));
}
if
(
datosUsuario
.
containsKey
(
"nuevoDNI"
))
{
usuario
.
setApellidos
((
String
)
datosUsuario
.
get
(
"nuevoDNI"
));
}
servicioCarPooling
.
modificarDatosUsuario
(
usuario
);
return
ResponseEntity
.
ok
(
new
DTOUsuario
(
usuario
));
}).
orElse
(
ResponseEntity
.
notFound
().
build
());
...
...
@@ -135,10 +148,15 @@ public class ControladorREST {
* Modificar datos de un viaje
*/
@PutMapping
(
"/viajes/actualizarViaje/{id}"
)
public
ResponseEntity
<
Viaje
>
actualizarViaje
(
@PathVariable
int
id
,
@RequestBody
String
origen
)
{
public
ResponseEntity
<
Viaje
>
actualizarViaje
(
@PathVariable
int
id
,
@RequestBody
Map
<
String
,
Object
>
datosViaje
)
{
Optional
<
Viaje
>
viajeExistente
=
servicioCarPooling
.
verViaje
(
id
);
return
viajeExistente
.
map
(
viaje
->
{
viaje
.
setOrigen
(
origen
);
if
(
datosViaje
.
containsKey
(
"nuevoOrigen"
))
{
viaje
.
setOrigen
((
String
)
datosViaje
.
get
(
"nuevoOrigen"
));
}
if
(
datosViaje
.
containsKey
(
"nuevoDestino"
))
{
viaje
.
setDestino
((
String
)
datosViaje
.
get
(
"nuevoDestino"
));
}
Viaje
viajeModificado
=
servicioCarPooling
.
modificarDatosViaje
(
viaje
);
return
ResponseEntity
.
ok
(
viajeModificado
);
...
...
@@ -185,16 +203,37 @@ public class ControladorREST {
return
ResponseEntity
.
notFound
().
build
();
}
}
@PostMapping
(
"/solicitudes/crearSolicitud"
)
public
ResponseEntity
<
Solicitud
>
crearSolicitud
(
@PathVariable
String
dni
,
@PathVariable
int
idReserva
)
{
@PostMapping
(
"/solicitudes"
)
public
ResponseEntity
<
Solicitud
>
crearSolicitud
(
@RequestBody
Map
<
String
,
Object
>
datosSolicitud
)
throws
ParseException
{
String
nombre
=
(
String
)
datosSolicitud
.
get
(
"nombre"
);
String
apellidos
=
(
String
)
datosSolicitud
.
get
(
"apellidos"
);
String
fechaString
=
(
String
)
datosSolicitud
.
get
(
"fecha"
);
SimpleDateFormat
formato
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
Date
fecha
=
formato
.
parse
(
fechaString
);
String
fechaString2
=
(
String
)
datosSolicitud
.
get
(
"fecha2"
);
Date
fecha2
=
formato
.
parse
(
fechaString2
);
String
dni
=
(
String
)
datosSolicitud
.
get
(
"dni"
);
int
telefono
=
(
int
)
datosSolicitud
.
get
(
"telefono"
);
String
email
=
(
String
)
datosSolicitud
.
get
(
"email"
);
String
claveAceso
=
(
String
)
datosSolicitud
.
get
(
"claveAcceso"
);
String
rol1
=
(
String
)
datosSolicitud
.
get
(
"rol"
);
Usuario
.
Rol
rol
=
Usuario
.
Rol
.
valueOf
(
rol1
);
Usuario
usuario
=
new
Usuario
(
nombre
,
apellidos
,
fecha
,
dni
,
telefono
,
email
,
claveAceso
,
rol
);
Reserva
reserva
=
new
Reserva
(
usuario
,
(
String
)
datosSolicitud
.
get
(
"origen"
),
(
String
)
datosSolicitud
.
get
(
"destino"
),
(
int
)
datosSolicitud
.
get
(
"numAsientos"
),
(
int
)
datosSolicitud
.
get
(
"precio"
),
fecha2
);
Solicitud
s
=
new
Solicitud
(
reserva
,
usuario
);
s
.
setId
(
19827439L
);
try
{
servicioCarPooling
.
crearSolicitud
(
dni
,
idReserva
);
servicioCarPooling
.
crearSolicitud
(
s
);
return
ResponseEntity
.
status
(
HttpStatus
.
CREATED
).
build
();
}
catch
(
SolicitudYaExistente
e
)
{
return
ResponseEntity
.
status
(
HttpStatus
.
CONFLICT
).
build
();
}
}
@GetMapping
(
"/solicitudes/{id}"
)
public
ResponseEntity
<
Solicitud
>
verSolicitudPorId
(
@PathVariable
Long
id
)
{
Optional
<
Solicitud
>
solicitud
=
servicioCarPooling
.
verSolicitud
(
id
);
...
...
src/main/java/com/carpooling/carpoolingaoraha/services/ServicioCarPooling.java
View file @
818150be
...
...
@@ -142,12 +142,8 @@ public class ServicioCarPooling {
return
reserva
;
}
@CacheEvict
(
value
=
"solicitudes"
,
key
=
"#id"
)
public
Solicitud
crearSolicitud
(
@NotBlank
String
dni
,
@NotBlank
int
idReserva
)
{
Usuario
usuario
=
repositorioUsuario
.
buscar
(
dni
).
orElseThrow
(
UsuarioNoRegistrado:
:
new
);
Reserva
reserva
=
repositorioReservas
.
buscar
(
idReserva
).
orElseThrow
(
UsuarioNoRegistrado:
:
new
);
Solicitud
s
=
new
Solicitud
();
usuario
.
solicitarViaje
(
reserva
.
getIdReserva
(),
s
);
@Transactional
public
Solicitud
crearSolicitud
(
@NotBlank
Solicitud
s
)
{
repositorioSolicitud
.
guardar
(
s
);
return
s
;
...
...
src/test/java/com/carpooling/carpoolingaoraha/ControladorRESTEST/ControladorRESTTEST.java
View file @
818150be
...
...
@@ -20,6 +20,8 @@ import org.springframework.http.HttpStatus;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
;
import
org.springframework.test.context.ActiveProfiles
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
...
...
@@ -89,13 +91,20 @@ public class ControladorRESTTEST {
Assertions
.
assertThat
(
respuesta
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
CREATED
);
// Crear un objeto ActualizarUsuarioRequest con los parámetros a enviar
Usuario
usuarioModificado
=
new
Usuario
();
usuarioModificado
.
setNombre
(
"Lewis"
);
usuarioModificado
.
setApellidos
(
"Hamilton"
);
String
nuevoNombre
=
"Hamilton"
;
String
nuevoApellido
=
"Ricciardo"
;
// Agregamos un nuevo apellido
String
nuevoDNI
=
"78162640S"
;
String
nuevoEmail
=
"aor00039@red.ujaen.es"
;
Map
<
String
,
Object
>
requestBody
=
new
HashMap
<>();
requestBody
.
put
(
"nombre"
,
nuevoNombre
);
requestBody
.
put
(
"apellido"
,
nuevoApellido
);
requestBody
.
put
(
"nuevoDNI"
,
nuevoDNI
);
requestBody
.
put
(
"nuevoEmail"
,
nuevoEmail
);
// Enviar la solicitud con datos en el cuerpo como JSON
ResponseEntity
<
DTOUsuario
>
respuestaA
=
restTemplate
.
exchange
(
"/usuarios/modificar/{dni}"
,
HttpMethod
.
PUT
,
new
HttpEntity
<>(
usuarioModificado
),
DTOUsuario
.
class
,
dni
"/usuarios/modificar/{dni}"
,
HttpMethod
.
PUT
,
new
HttpEntity
<>(
requestBody
),
DTOUsuario
.
class
,
dni
);
// Verificar que la respuesta sea OK, ya que se supone que el usuario existe en la base de datos
...
...
@@ -161,7 +170,7 @@ public class ControladorRESTTEST {
@Test
public
void
testActualizarViajeExistente
()
{
// Datos de prueba
int
idViaje
=
1
;
// Debes adaptar esto según tus datos de prueba
int
idViaje
=
7
;
// Debes adaptar esto según tus datos de prueba
Date
fecha
=
new
Date
(
2024
,
12
,
1
);
DTOViaje
viaje
=
new
DTOViaje
(
"Origen"
,
"destino"
,
fecha
,
4
,
10
,
idViaje
);
ResponseEntity
<
DTOViaje
>
respuesta
=
restTemplate
.
postForEntity
(
"/viajes"
,
viaje
,
DTOViaje
.
class
);
...
...
@@ -169,10 +178,16 @@ public class ControladorRESTTEST {
// Verificar que la creación del usuario fue exitosa
Assertions
.
assertThat
(
respuesta
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
CREATED
);
String
origen
=
"nuevoOrigen"
;
String
nuevoOrigen
=
"nuevoOrigen"
;
String
nuevoDestino
=
"nuevoDestino"
;
ResponseEntity
<
DTOUsuario
>
respuestaA
=
restTemplate
.
exchange
(
"/viajes/actualizarViaje/{id}"
,
HttpMethod
.
PUT
,
new
HttpEntity
<>(
origen
),
DTOUsuario
.
class
,
idViaje
Map
<
String
,
Object
>
requestBody
=
new
HashMap
<>();
requestBody
.
put
(
"nuevoOrigen"
,
nuevoOrigen
);
requestBody
.
put
(
"nuevoDestino"
,
nuevoDestino
);
// Enviar la solicitud con datos en el cuerpo como JSON
ResponseEntity
<
DTOViaje
>
respuestaA
=
restTemplate
.
exchange
(
"/viajes/actualizarViaje/{id}"
,
HttpMethod
.
PUT
,
new
HttpEntity
<>(
requestBody
),
DTOViaje
.
class
,
idViaje
);
// Verificar que la respuesta sea OK, ya que se supone que el usuario existe en la base de datos
...
...
@@ -290,16 +305,48 @@ public class ControladorRESTTEST {
@Test
public
void
crearSolicitud
()
{
Date
fecha
=
new
Date
(
2000
,
12
,
1
);
Usuario
conductor
=
new
Usuario
(
"Conductor"
,
"ApellidoConductor"
,
fecha
,
"78162640S"
,
123456789
,
"conductor@example.com"
,
"clave"
,
Usuario
.
Rol
.
CONDUCTOR
);
Reserva
reserva
=
new
Reserva
(
conductor
,
"Origen"
,
"Destino"
,
new
Date
(),
3
,
20
);
// Especifica el formato deseado para la fecha
SimpleDateFormat
formato
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
// Convierte la fecha a String
String
fechaComoString
=
formato
.
format
(
fecha
);
Date
fecha2
=
new
Date
(
2025
,
12
,
1
);
// Convierte la fecha a String
String
fe2
=
formato
.
format
(
fecha
);
Usuario
u
=
new
Usuario
(
"Conductor"
,
"ApellidoConductor"
,
fecha
,
"78162640S"
,
123456789
,
"conductor@example.com"
,
"clave"
,
Usuario
.
Rol
.
CONDUCTOR
);
Reserva
r
=
new
Reserva
(
u
,
"Origen"
,
"Destino"
,
3
,
20
,
fecha2
);
Long
id
=
1L
;
DTOSolicitud
solicitud
=
new
DTOSolicitud
(
id
,
reserva
,
conductor
);
ResponseEntity
<
Solicitud
>
respuestaR
=
restTemplate
.
postForEntity
(
"/solicitudes/crearSolicitud/"
,
solicitud
,
Solicitud
.
class
Usuario
.
Rol
rol
=
u
.
getRol
();
String
convertirRol
=
rol
.
name
();
Map
<
String
,
Object
>
requestBody
=
new
HashMap
<>();
requestBody
.
put
(
"nombre"
,
u
.
getNombre
());
requestBody
.
put
(
"apellidos"
,
u
.
getApellidos
());
requestBody
.
put
(
"fecha"
,
fechaComoString
);
requestBody
.
put
(
"dni"
,
u
.
getDNI
());
requestBody
.
put
(
"telefono"
,
u
.
getTelefono
());
requestBody
.
put
(
"email"
,
u
.
getEmail
());
requestBody
.
put
(
"claveAcceso"
,
u
.
getClaveAcceso
());
requestBody
.
put
(
"rol"
,
convertirRol
);
requestBody
.
put
(
"origen"
,
r
.
getViaje
().
getOrigen
());
requestBody
.
put
(
"destino"
,
r
.
getViaje
().
getDestino
());
requestBody
.
put
(
"numAsientos"
,
r
.
getNumPasajeros
());
requestBody
.
put
(
"precio"
,
r
.
getViaje
().
getPrecioAsiento
());
requestBody
.
put
(
"fecha2"
,
fe2
);
ResponseEntity
<
Solicitud
>
respuestaR
=
restTemplate
.
exchange
(
"/solicitudes"
,
HttpMethod
.
POST
,
new
HttpEntity
<>(
requestBody
),
Solicitud
.
class
);
Assertions
.
assertThat
(
respuestaR
.
getStatusCode
()).
isEqualTo
(
HttpStatus
.
CREATED
);
}
@Test
public
void
verSolicitud
()
{
Date
fecha
=
new
Date
(
2000
,
12
,
1
);
...
...
src/test/java/com/carpooling/carpoolingaoraha/services/ServicioCarPoolingTest.java
View file @
818150be
...
...
@@ -214,7 +214,8 @@ public class ServicioCarPoolingTest
usuario
.
setDNI
(
dni
);
servicio
.
altaCliente
(
usuario
);
Reserva
reserva
=
servicio
.
crearReserva
(
dni
,
new
Reserva
());
Solicitud
s
=
servicio
.
crearSolicitud
(
dni
,
reserva
.
getIdReserva
());
Solicitud
snueva
=
new
Solicitud
(
reserva
,
usuario
);
Solicitud
s
=
servicio
.
crearSolicitud
(
snueva
);
assertNotNull
(
s
);
}
...
...
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