Commit 7fac43cc by María Hidalgo

Finalizada persistencia

parent bb34dd1b
...@@ -24,16 +24,16 @@ ...@@ -24,16 +24,16 @@
<artifactId>spring-boot-starter</artifactId> <artifactId>spring-boot-starter</artifactId>
</dependency> </dependency>
<!-- <dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId> <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency> --> </dependency>
<!-- <dependency> <dependency>
<groupId>org.hibernate</groupId> <groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId> <artifactId>hibernate-core</artifactId>
<version>5.0.7.Final</version> <version>5.0.7.Final</version>
</dependency> --> </dependency>
<dependency> <dependency>
<groupId>mysql</groupId> <groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId> <artifactId>mysql-connector-java</artifactId>
......
...@@ -2,15 +2,17 @@ package es.ujaen.dae.carpoolingdae.app; ...@@ -2,15 +2,17 @@ package es.ujaen.dae.carpoolingdae.app;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext; import org.springframework.boot.autoconfigure.domain.EntityScan;
@SpringBootApplication(scanBasePackages = "es.ujaen.dae.carpooling.servicios") @SpringBootApplication(scanBasePackages = "es.ujaen.dae.carpooling.servicios")
@EntityScan(basePackages="es.ujaen.dae.ujacoin.entidades")
public class CarpoolingDaeApplication { public class CarpoolingDaeApplication {
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
// Creación de servidor // Creación de servidor
SpringApplication servidor = new SpringApplication(CarpoolingDaeApplication.class); SpringApplication.run(CarpoolingDaeApplication.class, args);
ApplicationContext context = servidor.run(args); //ApplicationContext context = servidor.run(args);
// SpringApplication.run(CarpoolingDaeApplication.class, args); // SpringApplication.run(CarpoolingDaeApplication.class, args);
} }
......
package es.ujaen.dae.carpoolingdae.entidades; package es.ujaen.dae.carpoolingdae.entidades;
import java.io.Serializable;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import javax.validation.Valid;
import javax.validation.constraints.Email; import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Past; import javax.validation.constraints.Past;
import javax.validation.constraints.Pattern; import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size; import javax.validation.constraints.Size;
import java.util.List; import java.util.List;
import es.ujaen.dae.carpoolingdae.excepciones.PlazaNoDisponible; import es.ujaen.dae.carpoolingdae.excepciones.NoAceptaConductor;
import es.ujaen.dae.carpoolingdae.utils.CodificadorMd5; import es.ujaen.dae.carpoolingdae.utils.CodificadorMd5;
//import org.hibernate.mapping.List;
import es.ujaen.dae.carpoolingdae.utils.ExprReg; import es.ujaen.dae.carpoolingdae.utils.ExprReg;
import lombok.Data;
import lombok.NoArgsConstructor; import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
/** /**
* Usuario a la app de carpooling * Usuario a la app de carpooling
* *
* @author maria * @author maria
*/ */
@Data
@NoArgsConstructor
public class Usuario {
// Lista de viajes como conductor
List<Viaje> viajesComoConductor;
// Lista de viajes como pasajero @Entity
List<Viaje> viajesComoPasajero; public class Usuario implements Serializable {
@NotBlank @Id
@NotNull
@Size(min = 9, max = 9) @Size(min = 9, max = 9)
@Pattern(regexp = ExprReg.DNI) @Pattern(regexp = ExprReg.DNI)
String dni; String dni;
...@@ -47,18 +48,27 @@ public class Usuario { ...@@ -47,18 +48,27 @@ public class Usuario {
@NotBlank @NotBlank
String apellidos; String apellidos;
@NotNull
@Past @Past
LocalDate fecha_nac; LocalDate fecha_nac;
@NotNull
@Size(min = 9, max = 13)
@Pattern(regexp = ExprReg.TLF) @Pattern(regexp = ExprReg.TLF)
String telef; String telef;
@NotBlank
@Email @Email
String email; String email;
@NotBlank @NotBlank
String clave; String clave;
// Viajes creados por el conductor
@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "usuario_dni")
List<Viaje> viajesComoConductor;
public Usuario(String dni, String nombre, String apellidos, LocalDate fecha_nac, String telef, String email, public Usuario(String dni, String nombre, String apellidos, LocalDate fecha_nac, String telef, String email,
String clave) { String clave) {
this.dni = dni; this.dni = dni;
...@@ -67,10 +77,9 @@ public class Usuario { ...@@ -67,10 +77,9 @@ public class Usuario {
this.fecha_nac = fecha_nac; this.fecha_nac = fecha_nac;
this.telef = telef; this.telef = telef;
this.email = email; this.email = email;
this.clave = CodificadorMd5.codificar(clave); this.clave = (clave != null ? CodificadorMd5.codificar(clave) : null);
// reservas = new ArrayList<>();
viajesComoConductor = new ArrayList<>(); viajesComoConductor = new ArrayList<>();
viajesComoPasajero = new ArrayList<>();
} }
...@@ -98,7 +107,6 @@ public class Usuario { ...@@ -98,7 +107,6 @@ public class Usuario {
return email; return email;
} }
/** /**
* Compara la clave con la del usuario, codificándola en Md5 * Compara la clave con la del usuario, codificándola en Md5
* *
...@@ -109,29 +117,34 @@ public class Usuario { ...@@ -109,29 +117,34 @@ public class Usuario {
public boolean claveValida(String clave) { public boolean claveValida(String clave) {
return clave.equals(clave); return clave.equals(clave);
} }
public void agregarViajeComoConductor(Viaje viaje) {
/**
* Agregar viaje a la lista de viajes creados por el conductor
*
* @param viaje
*/
public void agregarViajeComoConductor(@NotNull @Valid Viaje viaje) {
// Agregar el viaje a la lista de viajes del usuario como conductor // Agregar el viaje a la lista de viajes del usuario como conductor
viajesComoConductor.add(viaje); viajesComoConductor.add(viaje);
} }
public void enviarSolicitudParaSerPasajero(Viaje viaje) { /**
if (!viaje.usuariosSolicitantes.contains(this) && viaje.getPlazas() > 0) { * Aceptar pasajero en un viaje
viaje.usuariosSolicitantes.add(this); *
} else { * @param conductor que puede aceptar al pasajero
throw new PlazaNoDisponible(); * @param viaje
} * @param pasajero que es aceptado en el viaje
} */
/* public void confirmarPasajero(Viaje viaje) { public void aceptarPasajero(@NotNull @Valid Usuario conductor, @NotNull @Valid Viaje viaje,
if (viajesComoConductor.contains(viaje) && viaje.usuariosSolicitantes.contains(this)) { @NotNull @Valid Usuario pasajero) {
viaje.usuariosSolicitantes.remove(this); // Verifica si el viaje está en la lista de viajes del conductor
viaje.usuariosConfirmados.add(this); if (!viajesComoConductor.contains(viaje)) {
} else {
throw new NoAceptaConductor(); throw new NoAceptaConductor();
} }
} */
// Llamar a la función en Viaje para confirmar al pasajero
viaje.confirmarPasajero(pasajero, conductor);
}
} }
...@@ -4,24 +4,26 @@ import java.time.LocalDateTime; ...@@ -4,24 +4,26 @@ import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.validation.Valid; import javax.validation.Valid;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import javax.validation.constraints.Past; import javax.validation.constraints.Past;
import es.ujaen.dae.carpoolingdae.excepciones.PlazaNoDisponible;
import es.ujaen.dae.carpoolingdae.excepciones.NoAceptaConductor; @Entity
public class Viaje { public class Viaje {
// Lista de usuarios que solicitan unirse a un viaje @Id
List<Usuario> usuariosSolicitantes = new ArrayList<>(); @NotNull
@GeneratedValue(strategy = GenerationType.IDENTITY)
// Lista de usuarios que son confirmados en un viaje
List<Usuario> usuariosConfirmados = new ArrayList<>();
//@GeneratedValue(strategy = GenerationType.IDENTITY)
int id; int id;
@NotBlank @NotBlank
...@@ -30,26 +32,38 @@ public class Viaje { ...@@ -30,26 +32,38 @@ public class Viaje {
@NotBlank @NotBlank
String origen; String origen;
@NotNull
@Past @Past
LocalDateTime fecha_hora; LocalDateTime fechaHora;
@NotBlank @NotNull
int plazasDisponibles; int plazasDisponibles;
@NotBlank @NotBlank
Double precioAsiento; Double precioAsiento;
private Usuario conductor; // Lista de usuarios que solicitan unirse a un viaje
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "solicitantes_viaje")
List<Usuario> usuariosSolicitantes;
public Viaje(int id, String destino, String origen, LocalDateTime fecha_hora, int plazasDisponibles, // Lista de usuarios que son confirmados en un viaje
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "confirmados_viaje")
List<Usuario> usuariosConfirmados;
public Viaje(int id, String destino, String origen, LocalDateTime fechaHora, int plazasDisponibles,
Double precioAsiento) { Double precioAsiento) {
this.id = id; this.id = id;
this.origen = origen; this.origen = origen;
this.destino = destino; this.destino = destino;
this.fecha_hora = fecha_hora; this.fechaHora = fechaHora;
this.plazasDisponibles = plazasDisponibles; this.plazasDisponibles = plazasDisponibles;
this.precioAsiento = precioAsiento; this.precioAsiento = precioAsiento;
// reservas = new ArrayList<>();
usuariosSolicitantes = new ArrayList<>();
usuariosConfirmados = new ArrayList<>();
} }
public int getId() { public int getId() {
...@@ -64,8 +78,8 @@ public class Viaje { ...@@ -64,8 +78,8 @@ public class Viaje {
return origen; return origen;
} }
public LocalDateTime getFecha_hora() { public LocalDateTime getfechaHora() {
return fecha_hora; return fechaHora;
} }
public int getPlazas() { public int getPlazas() {
...@@ -76,53 +90,27 @@ public class Viaje { ...@@ -76,53 +90,27 @@ public class Viaje {
return precioAsiento; return precioAsiento;
} }
// Método para obtener el conductor del viaje public void enviarSolicitudParaSerPasajero(@NotNull @Valid Viaje viaje, @NotNull @Valid Usuario pasajero) {
public Usuario getConductor() { if (!usuariosSolicitantes.contains(pasajero) && getPlazas() > 0) { // Sino quedan plazas no puede solicitar unirse
return conductor; usuariosSolicitantes.add(pasajero);
}
public void setConductor(Usuario conductor) {
this.conductor = conductor;
}
public List<Usuario> getUsuariosConfirmados(){
return usuariosConfirmados;
}
public List<Usuario> getUsuariosSolicitantes(){
return usuariosSolicitantes;
}
/* public void addPasajero(Usuario pasajero) {
if (plazasDisponibles > 0) {
usuariosConfirmados.add(pasajero);
plazasDisponibles--;
} else { } else {
throw new PlazaNoDisponible(); throw new PlazaNoDisponible();
} }
} */
public void reducePlazasDisponibles(@NotNull @Valid Viaje viaje) {
if (plazasDisponibles > 0) {
plazasDisponibles--;
}
} }
public void confirmarPasajero(@NotNull @Valid Usuario pasajero) { public void confirmarPasajero(@NotNull @Valid Usuario pasajero, @NotNull @Valid Usuario conductor) {
// Verificar si el usuario que acepta es el conductor del viaje // Verificar si el pasajero está en la lista de solicitantes
if (!this.getConductor().equals(conductor)) { if (usuariosSolicitantes.contains(pasajero)) {
throw new NoAceptaConductor(); // Mover al pasajero de la lista de solicitantes a la lista de confirmados
} usuariosSolicitantes.remove(pasajero);
usuariosConfirmados.add(pasajero);
// Verificar si el pasajero está en la lista de solicitantes // Al añadir al pasajero a la lista de confirmados reduzco el número de plazas disponibles
if (usuariosSolicitantes.contains(pasajero)) { if (plazasDisponibles > 0) {
// Mover al pasajero de la lista de solicitantes a la lista de confirmados plazasDisponibles--;
usuariosSolicitantes.remove(pasajero); }
usuariosConfirmados.add(pasajero);
}
}
}
}
} }
package es.ujaen.dae.carpoolingdae.repositorios;
import java.util.Optional;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.springframework.transaction.annotation.Transactional;
import es.ujaen.dae.carpoolingdae.entidades.Usuario;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Propagation;
@Repository
@Transactional(propagation = Propagation.REQUIRED)
public class RepositorioUsuarios {
@PersistenceContext
EntityManager em;
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
public Optional<Usuario> buscar(String dni) {
return Optional.ofNullable(em.find(Usuario.class, dni));
}
public void guardar(Usuario usuario) {
em.persist(usuario);
}
}
package es.ujaen.dae.carpoolingdae.repositorios;
import java.util.List;
import java.util.Optional;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import es.ujaen.dae.carpoolingdae.entidades.Viaje;
@Repository
@Transactional(propagation = Propagation.REQUIRED)
public class RepositorioViajes {
@PersistenceContext
EntityManager em;
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
public Optional<Viaje> buscarViajePorId(int id) {
return Optional.ofNullable(em.find(Viaje.class, id));
}
public void guardarViaje(Viaje viaje) {
em.persist(viaje);
}
public List<Viaje> buscarViajes() {
TypedQuery<Viaje> query = em.createQuery("SELECT v FROM Viaje v", Viaje.class);
return query.getResultList();
}
public void actualizarViajes(Viaje viaje) {
em.merge(viaje);
}
}
## Fichero de configuración para UjaCoin durante testing
# spring.datasource.url: jdbc:mysql://localhost:33060/ujacoin_test
spring.datasource.url: jdbc:h2:mem:ujacoin_test;MODE=MYSQL;DATABASE_TO_LOWER=TRUE;DB_CLOSE_DELAY=-1
spring.jpa.properties.javax.persistence.schema-generation.database.action: drop-and-create
## Fichero de configuración para UjaCoin
spring.datasource.url: jdbc:mysql://localhost:33060/ujacoin
spring.datasource.username: ujacoin
spring.datasource.password: secret
spring.jpa.properties.javax.persistence.schema-generation.database.action: none
spring.data.jpa.repositories.bootstrap-mode: default
package es.ujaen.dae.carpoolingdae.servicios; package es.ujaen.dae.carpoolingdae.servicios;
import java.util.TreeMap;
import javax.validation.Valid; import javax.validation.Valid;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Map;
import java.util.Optional; import java.util.Optional;
import java.util.List; import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import es.ujaen.dae.carpoolingdae.entidades.Usuario; import es.ujaen.dae.carpoolingdae.entidades.Usuario;
import es.ujaen.dae.carpoolingdae.entidades.Viaje; import es.ujaen.dae.carpoolingdae.entidades.Viaje;
import es.ujaen.dae.carpoolingdae.excepciones.NoAceptaConductor;
import es.ujaen.dae.carpoolingdae.excepciones.UsuarioNoRegistrado;
import es.ujaen.dae.carpoolingdae.excepciones.UsuarioYaRegistrado; import es.ujaen.dae.carpoolingdae.excepciones.UsuarioYaRegistrado;
import es.ujaen.dae.carpoolingdae.excepciones.ViajeNoExistente; import es.ujaen.dae.carpoolingdae.excepciones.ViajeNoExistente;
import es.ujaen.dae.carpoolingdae.repositorios.RepositorioUsuarios;
import es.ujaen.dae.carpoolingdae.repositorios.RepositorioViajes;
@Service @Service
@Validated @Validated
public class SistemaCarpooling { public class SistemaCarpooling {
/** Mapa con la lista de Usuarios */ @Autowired
Map<String, Usuario> usuarios; RepositorioUsuarios repositorioUsuarios;
/** Mapa con la lista de Viajes */
Map<String, Viaje> viajes; @Autowired
RepositorioViajes repositorioViajes;
public SistemaCarpooling() { public SistemaCarpooling() {
usuarios = new TreeMap<>();
viajes = new TreeMap<>();
} }
/** /**
...@@ -43,12 +43,12 @@ public class SistemaCarpooling { ...@@ -43,12 +43,12 @@ public class SistemaCarpooling {
*/ */
public void altaUsuario(@NotNull @Valid Usuario usuario) { public void altaUsuario(@NotNull @Valid Usuario usuario) {
if (usuarios.containsKey(usuario.getDni())) { if (repositorioUsuarios.buscar(usuario.getDni()).isPresent()) {
throw new UsuarioYaRegistrado(); throw new UsuarioYaRegistrado();
} }
// Registrar usuario // Registrar usuario
usuarios.put(usuario.getDni(), usuario); repositorioUsuarios.guardar(usuario);
} }
...@@ -59,11 +59,22 @@ public class SistemaCarpooling { ...@@ -59,11 +59,22 @@ public class SistemaCarpooling {
* @param clave la clave de acceso * @param clave la clave de acceso
* @return el objeto de la clase Viaje asociado * @return el objeto de la clase Viaje asociado
*/ */
public Usuario loginUsuario(@NotBlank String email, @NotBlank String clave) { @Transactional
return Optional.ofNullable(usuarios.get(email)) public Optional<Usuario> loginUsuario(@NotBlank String dni, @NotBlank String clave) {
.filter(cliente -> cliente.claveValida(clave)) Optional<Usuario> usuarioLogin = repositorioUsuarios.buscar(dni)
.orElseThrow(UsuarioNoRegistrado::new); .filter((cliente) -> cliente.claveValida(clave));
return usuarioLogin;
}
public void agregarViaje(@NotNull @Valid Usuario conductor, @NotNull @Valid Viaje viaje) {
// Llamar a la función en Usuario para agregar el viaje como conductor
conductor.agregarViajeComoConductor(viaje);
// Agregar el viaje al repositorio de viajes
repositorioViajes.guardarViaje(viaje);
} }
/** /**
...@@ -77,9 +88,10 @@ public class SistemaCarpooling { ...@@ -77,9 +88,10 @@ public class SistemaCarpooling {
public List<Viaje> buscarViajes(@NotBlank String origen, @NotBlank String destino, @NotBlank LocalDate fecha) { public List<Viaje> buscarViajes(@NotBlank String origen, @NotBlank String destino, @NotBlank LocalDate fecha) {
List<Viaje> viajesEncontrados = new ArrayList<>(); List<Viaje> viajesEncontrados = new ArrayList<>();
for (Viaje viaje : viajes.values()) { // Iterar sobre la colección de viajes List<Viaje> listaViajes = repositorioViajes.buscarViajes();
for (Viaje viaje : listaViajes) { // Iterar sobre la colección de viajes
if (viaje.getOrigen().equals(origen) && viaje.getDestino().equals(destino) if (viaje.getOrigen().equals(origen) && viaje.getDestino().equals(destino)
&& viaje.getFecha_hora().toLocalDate().equals(fecha)) { && viaje.getfechaHora().toLocalDate().equals(fecha)) { // Busco todos los viajes de esa fecha
viajesEncontrados.add(viaje); viajesEncontrados.add(viaje);
} else { } else {
throw new ViajeNoExistente(); throw new ViajeNoExistente();
...@@ -89,55 +101,21 @@ public class SistemaCarpooling { ...@@ -89,55 +101,21 @@ public class SistemaCarpooling {
} }
public void agregarViaje(@NotNull @Valid Usuario conductor, @NotNull @Valid Viaje viaje) {
// Asignar el conductor al viaje
viaje.setConductor(conductor);
// Llamar a la función en Usuario para agregar el viaje como conductor
conductor.agregarViajeComoConductor(viaje);
// Agregar el viaje al mapa de viajes
viajes.put(String.valueOf(viaje.getId()), viaje);
}
/** /**
* Enviar solicitud para ser pasajero de un viaje * Enviar solicitud para ser pasajero de un viaje
* *
* @param viaje al que se envía la solicitud * @param viaje al que se envía la solicitud
*/ */
public void enviarSolicitudViaje(@NotNull @Valid Viaje viaje, @NotNull @Valid Usuario pasajero) { public void enviarSolicitudViaje(@NotNull @Valid Viaje viaje, @NotNull @Valid Usuario pasajero) {
// Llamar a la función en Usuario para enviar la solicitud // Llamar a la función en viaje para enviar la solicitud
pasajero.enviarSolicitudParaSerPasajero(viaje); viaje.enviarSolicitudParaSerPasajero(viaje, pasajero);
} }
public void aceptarPasajeroViaje(@NotNull @Valid Viaje viaje, @NotNull @Valid Usuario pasajero,
@NotNull @Valid Usuario conductor) {
/** viaje.confirmarPasajero(pasajero, conductor);
* Aceptar pasajero en un viaje repositorioViajes.actualizarViajes(viaje);
*
* @param viaje
* @param pasajero que es aceptado en el viaje
*/
/* public void aceptarPasajero(@NotNull @Valid Viaje viaje, @NotNull @Valid Usuario pasajero) {
// Llamar a la función en Usuario para confirmar al pasajero
viaje.confirmarPasajero(pasajero);
// Reducir el número de plazas disponibles en el viaje
viaje.reducePlazasDisponibles(viaje);
} */
public void aceptarPasajero(@NotNull @Valid Usuario conductor, @NotNull @Valid Viaje viaje,
@NotNull @Valid Usuario pasajero) {
// Verifica si el viaje está en la lista de viajes del conductor
if (!conductor.getViajesComoConductor().contains(viaje)) {
throw new NoAceptaConductor();
}
// Llamar a la función en Viaje para confirmar al pasajero
viaje.confirmarPasajero(pasajero);
} }
} }
\ No newline at end of file
...@@ -20,31 +20,6 @@ public class ViajeTest { ...@@ -20,31 +20,6 @@ public class ViajeTest {
} }
/* //private Viaje viaje;
@Test
void testAddPasajero() {
Usuario pasajero = new Usuario("12345678A",
"Conductor",
"Apellido",
LocalDate.of(1990, 1, 1),
"123456789",
"conductor@example.com",
"clave");
Viaje viaje = new Viaje(
12345,
"Origen",
"Destino",
LocalDateTime.of(2023, 9, 30, 8, 0),
2,
50.0);
viaje.addPasajero(pasajero);
assertTrue(viaje.getUsuariosConfirmados().contains(pasajero));
} */
@Test @Test
@DirtiesContext(methodMode = MethodMode.AFTER_METHOD) @DirtiesContext(methodMode = MethodMode.AFTER_METHOD)
...@@ -77,7 +52,7 @@ public class ViajeTest { ...@@ -77,7 +52,7 @@ public class ViajeTest {
LocalDateTime.of(2023, 9, 30, 8, 0), LocalDateTime.of(2023, 9, 30, 8, 0),
2, 2,
50.0); 50.0);
viaje.setConductor(conductor);
// Agregar el viaje al sistema // Agregar el viaje al sistema
sistemaCarpooling.agregarViaje(conductor, viaje); sistemaCarpooling.agregarViaje(conductor, viaje);
...@@ -87,7 +62,7 @@ public class ViajeTest { ...@@ -87,7 +62,7 @@ public class ViajeTest {
// Aceptar al pasajero en el viaje llamando a la función en Viaje // Aceptar al pasajero en el viaje llamando a la función en Viaje
try { try {
viaje.confirmarPasajero(pasajero); viaje.confirmarPasajero(pasajero, conductor);
} catch (NoAceptaConductor e) { } catch (NoAceptaConductor e) {
// Manejar la excepción si el conductor no es el correcto (opcional) // Manejar la excepción si el conductor no es el correcto (opcional)
e.printStackTrace(); e.printStackTrace();
......
...@@ -93,11 +93,11 @@ public class SistemaCarpoolingTest { ...@@ -93,11 +93,11 @@ public class SistemaCarpoolingTest {
"mhm@red.ujaen.es", "mhm@red.ujaen.es",
clave); clave);
// Cuenta cuenta = servicioUjaCoin.altaCliente(cliente); sistemaCarpooling.altaUsuario(usuario);
List <Usuario> usuarioLogin = sistemaCarpooling.loginUsuario(usuario.getEmail(), "clave"); Optional<Usuario> usuarioLogin = sistemaCarpooling.loginUsuario(usuario.getEmail(), "clave");
Assertions.assertThat(usuarioLogin.isPresent()).isTrue(); Assertions.assertThat(usuarioLogin.isPresent()).isTrue();
Assertions.assertThat(usuarioLogin.get()).isEqualTo(usuario); Assertions.assertThat(usuarioLogin.get().getDni()).isEqualTo(usuario.getDni());
} }
@DirtiesContext(methodMode = MethodMode.AFTER_METHOD) @DirtiesContext(methodMode = MethodMode.AFTER_METHOD)
...@@ -122,7 +122,7 @@ public class SistemaCarpoolingTest { ...@@ -122,7 +122,7 @@ public class SistemaCarpoolingTest {
clave); clave);
// Agregar el viaje al sistema // Agregar el viaje al sistema
sistemaCarpooling.agregarViaje(usuario.getDni(), nuevoViaje); sistemaCarpooling.agregarViaje(usuario,nuevoViaje);
// Buscar el viaje paraver si ha sido añadido // Buscar el viaje paraver si ha sido añadido
String origenBusqueda = "Origen"; String origenBusqueda = "Origen";
...@@ -162,9 +162,9 @@ public class SistemaCarpoolingTest { ...@@ -162,9 +162,9 @@ public class SistemaCarpoolingTest {
30.0); 30.0);
// Realizar la búsqueda de viajes // Realizar la búsqueda de viajes
String origenBusqueda2 = "Origen2"; /* String origenBusqueda2 = "Origen2";
String destinoBusqueda2 = "Destino2"; String destinoBusqueda2 = "Destino2";
LocalDate fechaBusqueda2 = LocalDate.of(2023, 9, 30); LocalDate fechaBusqueda2 = LocalDate.of(2023, 9, 30); */
List<Viaje> viajesEncontrados = sistemaCarpooling.buscarViajes(origenBusqueda, destinoBusqueda, fechaBusqueda); List<Viaje> viajesEncontrados = sistemaCarpooling.buscarViajes(origenBusqueda, destinoBusqueda, fechaBusqueda);
...@@ -204,16 +204,15 @@ public class SistemaCarpoolingTest { ...@@ -204,16 +204,15 @@ public class SistemaCarpoolingTest {
LocalDateTime.of(2023, 9, 30, 8, 0), LocalDateTime.of(2023, 9, 30, 8, 0),
2, 2,
50.0); 50.0);
viaje.setConductor(conductor);
// Agregar el viaje al sistema // Agregar el viaje al sistema
sistemaCarpooling.agregarViaje(conductor.getDni(), viaje); sistemaCarpooling.agregarViaje(conductor,viaje);
// Enviar solicitud de viaje // Enviar solicitud de viaje
sistemaCarpooling.enviarSolicitudViaje(viaje, pasajero); sistemaCarpooling.enviarSolicitudViaje(viaje, pasajero);
// Verificar que el pasajero está en la lista de solicitantes del viaje
assertTrue(viaje.getUsuariosSolicitantes().contains(pasajero));
} }
......
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