Implemento tests de Usuario y Reserva. Modifico fallos de diseño gracias a test.

parent 5f179aa2
......@@ -27,6 +27,11 @@
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
......
......@@ -17,15 +17,17 @@ public class Reserva {
private Viaje viaje;
SistemaCarPooling sistema;
public Reserva(){}
public Reserva(Usuario conductor, String origen, String destino, Date fechaSalida, int nAsientos, int precioAsiento) {
this.conductor = conductor;
this.idReserva = ++incrementaReserva;
this.numPasajeros = nAsientos;
this.viaje = new Viaje(origen, destino, fechaSalida, nAsientos, precioAsiento);
this.sistema = new SistemaCarPooling();
this.sistema.addViaje(this.viaje);
this.sistema.addReserva(this);
this.puntuacion = 0;
this.pasajeros = new ArrayList<String>();
}
public void anadirPasajeros(String DNI, int idReserva){
......
package com.carpooling.carpoolingaoraha.entidades;
import java.util.ArrayList;
import java.util.List;
public class SistemaCarPooling {
......@@ -8,6 +9,12 @@ public class SistemaCarPooling {
private List<Usuario> usuarios;
private List<Reserva> reservas;
public SistemaCarPooling() {
this.nombre = "Blablacar";
this.viajes = new ArrayList<>();
this.usuarios = new ArrayList<>();
this.reservas = new ArrayList<>();
}
public String getNombre() {
return nombre;
......
......@@ -11,7 +11,7 @@ enum Rol {
CONDUCTOR, PASAJERO
};
public class Usuario {
SistemaCarPooling sistemaCarPooling;
private SistemaCarPooling sistemaCarPooling;
private String nombre;
private String apellidos;
private Date FNac;
......@@ -25,6 +25,9 @@ public class Usuario {
private SistemaCarPooling sis;
public Usuario() {
}
public Usuario(String nombre, String apellidos, Date FNac, String DNI, int telefono, String email,
String claveAcceso, Rol rol) {
this.nombre = nombre;
......@@ -41,6 +44,7 @@ public class Usuario {
}else{
this.viajesOfertados = null;
}
this.sistemaCarPooling = new SistemaCarPooling();
}
public String getNombre() {
......@@ -161,9 +165,8 @@ public class Usuario {
return this.puntuacion/viajesOfertados.size();
}
public List<Viaje> buscarViaje(String origen, String destino, Date fecha, Rol rol) {
public List<Viaje> buscarViaje(String origen, String destino, Date fecha, Rol rol, List<Viaje> todosLosViajes) {
List<Viaje> viajesDisponibles = new ArrayList<>();
List<Viaje> todosLosViajes = sis.getViajes();
for (Viaje viaje : todosLosViajes) {
if (viaje.getOrigen().equals(origen) && viaje.getDestino().equals(destino)) {
......
......@@ -8,7 +8,7 @@ public class Viaje {
private Date fechaSalida;
private int nAsientos;
private int precioAsiento;
public Viaje(){}
public Viaje(String origen, String destino, Date fechaSalida, int nAsientos, int precioAsiento) {
this.origen = origen;
this.destino = destino;
......
package com.carpooling.carpoolingaoraha.entidades;
import java.util.ArrayList;
import static org.junit.jupiter.api.Assertions.*;
import java.util.Date;
import org.junit.Before;
import org.junit.jupiter.api.Test;
public class ReservaTest {
private Reserva reserva;
private Usuario conductor;
@Before
public void setUp() {
conductor = new Usuario("Conductor", "ApellidoConductor", new Date(), "12345678A", 123456789, "conductor@example.com", "clave", Rol.CONDUCTOR);
reserva = new Reserva(conductor, "Origen", "Destino", new Date(), 3, 20);
}
@Test
public void testAnadirPasajeros() {
setUp();
reserva.anadirPasajeros("87654321B", reserva.getIdReserva());
ArrayList<String> pasajeros = reserva.getPasajeros();
assertTrue(pasajeros.contains("87654321B"));
}
@Test
public void testEsViajero() {
setUp();
reserva.anadirPasajeros("87654321B", reserva.getIdReserva());
assertTrue(reserva.esViajero("87654321B"));
assertFalse(reserva.esViajero("99999999C"));
}
}
package com.carpooling.carpoolingaoraha.entidades;
import java.util.Date;
import java.util.List;
import java.util.ArrayList;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
public class UsuarioTest {
@Test
public void testCambiarRol() {
Usuario usuario = new Usuario("Nombre", "Apellidos", new Date(), "12345678A", 123456789, "correo@example.com", "clave", Rol.CONDUCTOR);
assertEquals(Rol.CONDUCTOR, usuario.getRol());
usuario.cambiarRol();
assertEquals(Rol.PASAJERO, usuario.getRol());
usuario.cambiarRol();
assertEquals(Rol.CONDUCTOR, usuario.getRol());
}
@Test
public void testOfrecerViaje() {
Usuario conductor = new Usuario("Conductor", "ApellidoConductor", new Date(), "12345678A", 123456789, "conductor@example.com", "clave", Rol.CONDUCTOR);
Usuario pasajero = new Usuario("Pasajero", "ApellidoPasajero", new Date(), "87654321B", 987654321, "pasajero@example.com", "clave", Rol.PASAJERO);
assertTrue(conductor.ofrecerViaje("Origen", "Destino", new Date(), 3, 20));
assertFalse(pasajero.ofrecerViaje("Origen", "Destino", new Date(), 2, 15));
}
@Test
public void testAsignarPuntuacion() {
Usuario conductor = new Usuario("Conductor", "ApellidoConductor", new Date(), "12345678A", 123456789, "conductor@example.com", "clave", Rol.CONDUCTOR);
Usuario pasajero = new Usuario("Pasajero", "ApellidoPasajero", new Date(), "87654321B", 987654321, "pasajero@example.com", "clave", Rol.PASAJERO);
assertTrue(conductor.asignarPuntuacion(1, "87654321B", 4));
assertTrue(pasajero.asignarPuntuacion(1, "12345678A", 4));
}
@Test
public void testBuscarViaje() {
List<Viaje> todosLosViajes = new ArrayList<>();;
Usuario pasajero = new Usuario("Pasajero", "ApellidoPasajero", new Date(), "87654321B", 987654321, "pasajero@example.com", "clave", Rol.PASAJERO);
Viaje viaje1 = new Viaje("Origen1", "Destino1", new Date(), 3, 20);
Viaje viaje2 = new Viaje("Origen2", "Destino2", new Date(), 2, 15);
Viaje viaje3 = new Viaje("Origen1", "Destino1", new Date(), 4, 18);
todosLosViajes.add(viaje1);
todosLosViajes.add(viaje2);
todosLosViajes.add(viaje3);
List<Viaje> viajesDisponibles = pasajero.buscarViaje("Origen1", "Destino1", new Date(), Rol.PASAJERO, todosLosViajes);
assertEquals(2, viajesDisponibles.size());
}
}
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