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); }
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); }