public ICalculaUtilidadPaqueteria CrearInstancia(EnumEmpresasPaqueteria paqueteria)
        {
            ICalculaUtilidadPaqueteria   calculaUtilidadPaqueteria = null;
            IObtenedorUtilidadPaqueteria obtenedorUtilidadPaqueteria;

            switch (paqueteria)
            {
            case EnumEmpresasPaqueteria.DHL:
                obtenedorUtilidadPaqueteria = _factoryGenericContainer.GetInstance <IObtenedorUtilidadPaqueteria>("ObtenerUtilidadDHL");
                calculaUtilidadPaqueteria   = new CalcularUtilidadPaqueteria(obtenedorUtilidadPaqueteria);
                break;

            case EnumEmpresasPaqueteria.Estafeta:
                obtenedorUtilidadPaqueteria = _factoryGenericContainer.GetInstance <IObtenedorUtilidadPaqueteria>("ObtenerUtilidadEstafeta");
                calculaUtilidadPaqueteria   = new CalcularUtilidadPaqueteria(obtenedorUtilidadPaqueteria);
                break;

            case EnumEmpresasPaqueteria.Fedex:
                obtenedorUtilidadPaqueteria = _factoryGenericContainer.GetInstance <IObtenedorUtilidadPaqueteria>("ObtenerUtilidadFedex");
                calculaUtilidadPaqueteria   = new CalcularUtilidadPaqueteria(obtenedorUtilidadPaqueteria);
                break;
            }

            return(calculaUtilidadPaqueteria);
        }
예제 #2
0
        public void CalcularCostoAdiccionalEnvio_EstafetaMaritimo9000KMOtonio_CalculoCorrecto()
        {
            //Arrange
            var distancia           = 9000;
            var paqueteria          = "Estafeta";
            var fechaPedido         = new DateTime(2020, 09, 23, 8, 00, 00);
            var costoEsperado       = 4502.25M;
            var costoTransportacion = 2700M;

            var docObtenedorUtilidadDHL           = new ObtenedorUtilidadEstafeta();
            var docCalculaUtilidadPaqueteria      = new CalcularUtilidadPaqueteria(docObtenedorUtilidadDHL);
            var docCalculaCostoPorTemporadaOtonio = new CalculaCostoAdiccionalPorTemporadaOtonio();

            var SUT = new CalculaCostoAdiccionalEnvioMaritimo(docCalculaUtilidadPaqueteria, docCalculaCostoPorTemporadaOtonio);

            //Act
            var costoEnvioMaritimo = SUT.CalcularCostoAdiccionalEnvio(costoTransportacion, distancia, fechaPedido, paqueteria);

            //Assert
            Assert.AreEqual(costoEsperado, costoEnvioMaritimo);
        }
        public void costoPaquete_DHLAereo446400KMAplicaCostoAdiccionalPorEscala_CalculoCorrecto()
        {
            //Arrange
            var distancia      = 446400;
            var paqueteria     = "DHL";
            var fechaPedido    = new DateTime(2020, 01, 23, 8, 00, 00);
            var costoEsparado  = 6829800M;
            var tipoTransporte = "Aereo";

            var docObtenerCostoPorKilometroAereo = new ObtenedorCostoPorKilometroAereo();
            var docCalculaAdiccionalPorEscala    = new CalculaCostoAdiccionalPorEscala();
            var docObtenedorUtilidadPaqueteria   = new ObtenedorUtilidadDHL();
            var calculaUtilidadFedex             = new CalcularUtilidadPaqueteria(docObtenedorUtilidadPaqueteria);
            var docCalculaCostoAereo             = new CalculaCostoAdiccionalAdiccionalEnvioAereo(docCalculaAdiccionalPorEscala, calculaUtilidadFedex);

            var SUT = new CalculaCostoEnvio(docObtenerCostoPorKilometroAereo, docCalculaCostoAereo);

            //Act
            var costoPedido = SUT.costoPaquete(distancia, paqueteria, fechaPedido);


            Assert.AreEqual(costoEsparado, costoPedido);
        }
        public void costoPaquete_DHLMaritimo9000KMAplicaCostoAdiccionalPorEscala_CalculoCorrecto()
        {
            //Arrange
            var distancia      = 9000;
            var paqueteria     = "DHL";
            var fechaPedido    = new DateTime(2020, 01, 23, 8, 00, 00);
            var costoEsparado  = 4981.5M;
            var tipoTransporte = "Maritimo";

            var obtenedorCostoPorKilometroMaritimo = new ObtenedorCostoPorKilometroMaritimo();
            var docCalculaAdiccionalPorTemporada   = new CalculaCostoAdiccionalPorTemporadaInvierno();
            var docObtenedorUtilidadPaqueteria     = new ObtenedorUtilidadDHL();
            var calculaUtilidadDHL   = new CalcularUtilidadPaqueteria(docObtenedorUtilidadPaqueteria);
            var docCalculaCostoAereo = new CalculaCostoAdiccionalEnvioMaritimo(calculaUtilidadDHL, docCalculaAdiccionalPorTemporada);

            var SUT = new CalculaCostoEnvio(obtenedorCostoPorKilometroMaritimo, docCalculaCostoAereo);


            //Act
            var costoPedido = SUT.costoPaquete(distancia, paqueteria, fechaPedido);


            Assert.AreEqual(costoEsparado, costoPedido);
        }
        public void costoPaquete_EstafetaTerrestre80KM_CalculoCorrecto()
        {
            //Arrange
            var distancia      = 80M;
            var paqueteria     = "Estafeta";
            var FechaPedido    = new DateTime(2020, 01, 23, 12, 00, 00);
            var costoEsperado  = 1160M;
            var tipoTransporte = "Terrestre";

            var docObtenerCostoPorKilometroTerrestre = new ObtenedorCostoPorKilometroTerrestre();
            var docCalculaAdiccionalPorEscala        = new CalculaCostoAdiccionalPorEscala();
            var docObtenedorUtilidadPaqueteria       = new ObtenedorUtilidadEstafeta();
            var calculaUtilidadFedex = new CalcularUtilidadPaqueteria(docObtenedorUtilidadPaqueteria);
            var docCalculaCostoAereo = new CalculaCostoAdiccionalAdiccionalEnvioAereo(docCalculaAdiccionalPorEscala, calculaUtilidadFedex);

            var SUT = new CalculaCostoEnvio(docObtenerCostoPorKilometroTerrestre, docCalculaCostoAereo);

            //Act

            var costoPedido = SUT.costoPaquete(distancia, paqueteria, FechaPedido);

            //Assert
            Assert.AreEqual(costoEsperado, costoPedido);
        }