public IActionResult Post(int id, [FromBody] ObjetoPostReserva objeto) { if (objeto.Filtro == null) { return(BadRequest("Filtro no puede ser null")); } if (objeto.Datos == null) { return(BadRequest("Los datos no pueden ser null")); } if (objeto.HospedajeId == null) { return(BadRequest("El id del hospedaje no pueden ser null")); } try { HospedajeFiltro filtro = objeto.Filtro; DatosUsuario datos = objeto.Datos; int hospedajeId = (int)objeto.HospedajeId; Reserva reserva = logica.Reserva(filtro, hospedajeId, datos); logica.AgregarReserva(reserva); return(Ok(reserva)); } catch (YaExisteLaEntidadExcepcion) { return(BadRequest("No se puede ingresar una reserva con el mismo id")); } catch (EntidadNoExisteExcepcion) { return(NotFound("No existe el hospedaje")); } }
public void PostReservaDatosNull() { var logicMock = new Mock <IReserva>(MockBehavior.Strict); var logicMockHospedaje = new Mock <IHospedaje>(MockBehavior.Strict); ReservasController controller = new ReservasController(logicMock.Object, logicMockHospedaje.Object); DateTime checkIn = new DateTime(2020, 10, 9); DateTime checkOut = new DateTime(2020, 10, 11); const int intTest = 1; CantHuespedes huespedes = new CantHuespedes() { CantJubilados = 0, CantAdultos = intTest, CantBebes = intTest, CantNinios = intTest, }; HospedajeFiltro filtro = new HospedajeFiltro() { Huespedes = huespedes, CheckIn = checkIn, CheckOut = checkOut, }; ObjetoPostReserva objeto = new ObjetoPostReserva() { HospedajeId = intTest, Datos = null, Filtro = filtro }; var result = controller.Post(intTest, objeto); var okResult = result as BadRequestObjectResult; logicMock.VerifyAll(); }
public void TestCrearReservaValido() { CantHuespedes huespedes = new CantHuespedes() { CantAdultos = 1, CantBebes = 1, CantNinios = 1, CantJubilados = 0, }; HospedajeFiltro filtro = new HospedajeFiltro() { Huespedes = huespedes, CheckIn = new DateTime(2020, 10, 2), CheckOut = new DateTime(2020, 10, 2), }; Hospedaje hospedaje = new Hospedaje() { Id = 0 }; DatosUsuario datosTurista = new DatosUsuario() { Apellido = "test", Nombre = "Prueba", Mail = "test" }; var logicaHospedajeMock = new Mock <IHospedaje>(MockBehavior.Strict); var repoMock = new Mock <IRepository <Reserva> >(MockBehavior.Strict); Reserva_Logic logica = new Reserva_Logic(repoMock.Object, logicaHospedajeMock.Object); logicaHospedajeMock.Setup(x => x.ObtenerPorId(0)).Returns(hospedaje); logicaHospedajeMock.Setup(x => x.ActualizarHospedaje(hospedaje)); Reserva reserva = logica.Reserva(filtro, hospedaje.Id, datosTurista); Assert.AreEqual(hospedaje.Id, reserva.Hospedaje.Id); }
public void BuscarPuntoIdValidoOcupado() { List <Imagen> imagenes = new List <Imagen>() { new Imagen() { Id = 0, Ruta = "test.jpg", }, }; var repoMock = new Mock <IRepository <Hospedaje> >(MockBehavior.Strict); var logicaPuntoMock = new Mock <IPuntoTuristico>(MockBehavior.Strict); Hospedaje_Logic logica = new Hospedaje_Logic(repoMock.Object, logicaPuntoMock.Object); PuntoTuristico punto = new PuntoTuristico() { Nombre = "Prueba", Descripcion = "DASD", Imagen = imagenes.First(), Id = 0, PuntosTuristicosCategoria = new List <PuntoTuristicoCategoria>(), }; Hospedaje hospedaje = new Hospedaje() { Id = 0, NombreHospedaje = "Hotel X", Descripcion = "Test", Direccion = "Test", CantidadEstrellas = 2, Capacidad = 5, PrecioPorNoche = 140, PrecioTotalPeriodo = 200, Imagenes = imagenes, Ocupado = true, PuntoTuristico = punto, }; List <Hospedaje> lista = new List <Hospedaje>() { hospedaje }; repoMock.Setup(x => x.GetAll()).Returns(lista); CantHuespedes huespedes = new CantHuespedes() { CantAdultos = 1, CantBebes = 0, CantNinios = 1, CantJubilados = 0, }; HospedajeFiltro filtro = new HospedajeFiltro() { Huespedes = huespedes, CheckIn = new DateTime(2020, 10, 9), CheckOut = new DateTime(2020, 10, 11), }; List <Hospedaje> retorno = logica.BuscarHospedajePunto(punto.Id, filtro); Assert.AreEqual(0, retorno.Count); }
private static void CargarDatosFiltro(HospedajeFiltro filtro, Reserva retorno) { int cantidadHuespedes = filtro.Huespedes.CapacidadTotal(); retorno.CantidadHuespedes = cantidadHuespedes; retorno.CheckIn = filtro.CheckIn; retorno.CheckOut = filtro.CheckOut; }
public void GetHospedajesPorPuntoYFiltroOk() { string stringPrueba = "Test"; int intPrueba = 5; int puntoId = 0; var logicMock = new Mock <IHospedaje>(MockBehavior.Strict); HospedajesController controller = new HospedajesController(logicMock.Object); HospedajeModel hospedajeModel = new HospedajeModel() { NombreHospedaje = stringPrueba, Descripcion = stringPrueba, Direccion = stringPrueba, CantidadEstrellas = intPrueba, Capacidad = intPrueba, PrecioPorNoche = intPrueba, PrecioTotalPeriodo = intPrueba, Imagenes = new List <Imagen>() { new Imagen() { Ruta = stringPrueba, Id = intPrueba } }, }; Hospedaje hospedaje = hospedajeModel.ToEntity(); hospedaje.PuntoTuristico = new PuntoTuristico() { Id = puntoId, Nombre = "Test" }; CantHuespedes huespedes = new CantHuespedes() { CantJubilados = 0, CantAdultos = 1, CantBebes = 0, CantNinios = 1, }; HospedajeFiltro filtro = new HospedajeFiltro() { Huespedes = huespedes, CheckIn = new DateTime(2020, 10, 9), CheckOut = new DateTime(2020, 10, 19), }; logicMock.Setup(x => x.BuscarHospedajePunto(puntoId, filtro)). Returns(new List <Hospedaje>() { hospedaje }); var result = controller.GetFiltro(puntoId, filtro); var okResult = result as OkObjectResult; var retorno = okResult.Value as List <Hospedaje>; logicMock.VerifyAll(); Assert.AreEqual(1, retorno.Count); }
public Reserva Reserva(HospedajeFiltro filtro, int hospedajeId, DatosUsuario datosTurista) { Reserva retorno = new Reserva(); CargarDatosFiltro(filtro, retorno); CargarDatosTurista(datosTurista, retorno); SetearEstadoYDescripcion(retorno); SetearHospedaje(hospedajeId, retorno); return(retorno); }
private static int ObtenerDias(HospedajeFiltro filtro) { DateTime checkIn = filtro.CheckIn; DateTime checkOut = filtro.CheckOut; if (ValidadorFecha.FechaMenor(checkIn, checkOut)) { return((int)(checkOut - checkIn).TotalDays); } else { throw new RevisarFechaExcepcion(); } }
public void PostReservaYaExisteId() { string stringPrueba = "test"; var logicMock = new Mock <IReserva>(MockBehavior.Strict); var logicMockHospedaje = new Mock <IHospedaje>(MockBehavior.Strict); ReservasController controller = new ReservasController(logicMock.Object, logicMockHospedaje.Object); DateTime checkIn = new DateTime(2020, 10, 9); DateTime checkOut = new DateTime(2020, 10, 11); const int intTest = 1; CantHuespedes huespedes = new CantHuespedes() { CantJubilados = 0, CantAdultos = intTest, CantBebes = intTest, CantNinios = intTest, }; HospedajeFiltro filtro = new HospedajeFiltro() { Huespedes = huespedes, CheckIn = checkIn, CheckOut = checkOut, }; DatosUsuario datos = new DatosUsuario() { Nombre = stringPrueba, Apellido = stringPrueba, Mail = stringPrueba }; logicMock.Setup(x => x.Reserva(filtro, intTest, datos)).Returns(It.IsAny <Reserva>()); logicMock.Setup(x => x.AgregarReserva(It.IsAny <Reserva>())).Throws(new YaExisteLaEntidadExcepcion()); ObjetoPostReserva objeto = new ObjetoPostReserva() { HospedajeId = intTest, Datos = datos, Filtro = filtro }; var result = controller.Post(intTest, objeto); var okResult = result as BadRequestObjectResult; logicMock.VerifyAll(); }
public IActionResult GetFiltro(int id, [FromBody] HospedajeFiltro filtro) { try { List <Hospedaje> hospedaje = logic.BuscarHospedajePunto(id, filtro); return(Ok(hospedaje)); } catch (RevisarFechaExcepcion) { return(BadRequest("Revisar CheckIn y CheckOut")); } catch (EntidadNoExisteExcepcion) { return(NotFound("El hospedaje o el punto no existen ")); } catch (FechaVaciaException) { return(BadRequest("Revisar CheckIn y CheckOut, uno de los dos no fue seteado correctamente")); } }
public List <Hospedaje> BuscarHospedajePunto(int puntoId, HospedajeFiltro filtro) { List <Hospedaje> hospedajes = this.ObtenerHospedajesDePunto(puntoId); List <Hospedaje> retorno = new List <Hospedaje>(); int capacidad = filtro.Huespedes.CapacidadTotal(); int dias = ObtenerDias(filtro); foreach (Hospedaje hospedaje in hospedajes) { if (TieneCapacidad(capacidad, hospedaje)) { if (NoOcupado(hospedaje)) { hospedaje.PrecioTotalPeriodo = CalcularPrecioTotal (filtro.Huespedes, hospedaje.PrecioPorNoche, dias); retorno.Add(hospedaje); } } } return(retorno); }