public void TestGenerarReporteOk()
        {
            List <CantReservasPorHospedaje> lista = new List <CantReservasPorHospedaje>();
            var             logicaReservaMock     = new Mock <IReserva>(MockBehavior.Strict);
            IGenerarReporte generador             = new GenerarReporteConcretoA(logicaReservaMock.Object);
            PuntoTuristico  punto = new PuntoTuristico()
            {
                Id = 0, Nombre = "Test"
            };
            DateTime      inicio = new DateTime(2020, 10, 9);
            DateTime      fin    = new DateTime(2020, 10, 19);
            EstadoReserva estado = EstadoReserva.Creada;
            DatosReporte  datos  = new DatosReporte()
            {
                PuntoId = punto.Id, Inicio = inicio, Fin = fin
            };
            Hospedaje hospedaje1 = new Hospedaje()
            {
                NombreHospedaje = "Hospedaje1", PuntoTuristico = punto
            };
            Hospedaje hospedaje2 = new Hospedaje()
            {
                NombreHospedaje = "Hospedaje2", PuntoTuristico = punto
            };
            Reserva reserva1 = new Reserva()
            {
                Hospedaje = hospedaje1, CheckIn = inicio, CheckOut = fin, Estado = estado
            };
            Reserva reserva2 = new Reserva()
            {
                Hospedaje = hospedaje1, CheckIn = inicio, CheckOut = fin, Estado = estado
            };
            Reserva reserva3 = new Reserva()
            {
                Hospedaje = hospedaje2, CheckIn = inicio, CheckOut = fin, Estado = estado
            };
            bool           condicionCantElem = false;
            bool           condicionElemOrd  = false;
            bool           condicion         = false;
            List <Reserva> reservas          = new List <Reserva>();

            reservas.Add(reserva1);
            reservas.Add(reserva2);
            reservas.Add(reserva3);

            logicaReservaMock.Setup(x => x.ObtenerTodos()).Returns(reservas);

            lista             = generador.GenerarReporte(datos);
            condicionCantElem = (lista.Count == 2);
            condicionElemOrd  = (lista.First().NombreHospedaje.Equals(hospedaje1.NombreHospedaje));

            condicion = condicionCantElem && condicionElemOrd;
            Assert.IsTrue(condicion);
        }
 public IActionResult GetReporte([FromBody] DatosReporte datos)
 {
     try
     {
         IGenerarReporte generar = new GenerarReporteConcretoA(logica);
         List <CantReservasPorHospedaje> salidaReporte = generar.GenerarReporte(datos);
         return(Ok(salidaReporte));
     }catch (FechaVaciaException)
     {
         return(BadRequest("La fecha no se seteo correctamente"));
     }
     catch (NoHayReservasException)
     {
         return(BadRequest("No hay reservas para ese punto"));
     }
     catch (UnsupportedContentTypeException)
     {
         return(BadRequest("Formato de cuerpo incorrecto. Debe ser JSON"));
     }
 }
        public void TestGenerarReporteFechaFueraDeRango()
        {
            List <CantReservasPorHospedaje> lista = new List <CantReservasPorHospedaje>();
            var             logicaReservaMock     = new Mock <IReserva>(MockBehavior.Strict);
            IGenerarReporte generador             = new GenerarReporteConcretoA(logicaReservaMock.Object);
            PuntoTuristico  puntoEsta             = new PuntoTuristico()
            {
                Id = 0
            };
            PuntoTuristico puntoNoEsta = new PuntoTuristico()
            {
                Id = 1
            };
            DateTime      datosInicio   = new DateTime(2020, 10, 9);
            DateTime      datosFin      = new DateTime(2020, 10, 19);
            DateTime      reservaInicio = new DateTime(2020, 9, 9);
            DateTime      reservaFin    = new DateTime(2020, 9, 19);
            EstadoReserva estado        = EstadoReserva.Creada;
            DatosReporte  datos         = new DatosReporte()
            {
                PuntoId = puntoNoEsta.Id, Inicio = datosInicio, Fin = datosFin
            };

            Hospedaje hospedaje = new Hospedaje()
            {
                NombreHospedaje = "Hospedaje2", PuntoTuristico = puntoEsta
            };
            Reserva reserva = new Reserva()
            {
                Hospedaje = hospedaje, CheckIn = reservaInicio, CheckOut = reservaFin, Estado = estado
            };
            List <Reserva> reservas = new List <Reserva>()
            {
                reserva
            };


            logicaReservaMock.Setup(x => x.ObtenerTodos()).Returns(reservas);

            Assert.Throws <NoHayReservasException>(() => generador.GenerarReporte(datos));
        }
        public void TestGenerarReporteConEstadoInvalido()
        {
            List <CantReservasPorHospedaje> lista = new List <CantReservasPorHospedaje>();
            var             logicaReservaMock     = new Mock <IReserva>(MockBehavior.Strict);
            IGenerarReporte generador             = new GenerarReporteConcretoA(logicaReservaMock.Object);
            PuntoTuristico  punto = new PuntoTuristico()
            {
                Id = 0, Nombre = "Test"
            };
            DateTime     inicio = new DateTime(2020, 10, 9);
            DateTime     fin    = new DateTime(2020, 10, 19);
            DatosReporte datos  = new DatosReporte()
            {
                PuntoId = punto.Id, Inicio = inicio, Fin = fin
            };

            Hospedaje hospedaje1 = new Hospedaje()
            {
                NombreHospedaje = "Hospedaje1", PuntoTuristico = punto
            };
            Reserva reserva1 = new Reserva()
            {
                Hospedaje = hospedaje1, CheckIn = inicio, CheckOut = fin, Estado = EstadoReserva.Aceptada
            };
            Reserva reserva2 = new Reserva()
            {
                Hospedaje = hospedaje1, CheckIn = inicio, CheckOut = fin, Estado = EstadoReserva.Expirada
            };

            List <Reserva> reservas = new List <Reserva>();

            reservas.Add(reserva1);
            reservas.Add(reserva2);

            logicaReservaMock.Setup(x => x.ObtenerTodos()).Returns(reservas);

            lista = generador.GenerarReporte(datos);

            Assert.AreEqual(1, lista.Count);
        }