Modificaciones para funcionamiento de tests

parent c9bfc1e0
......@@ -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 {
}
......@@ -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")
......
......@@ -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 usuarioModificado
@RequestBody Map<String, Object> datosUsuario
) {
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);
......
......@@ -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;
......
......@@ -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);
......
......@@ -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);
}
......
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