public void ObtenerOpcionMasEconomica_ExisteOtraEmpresaMasBarata_Mensaje20MasBarato() { //Arrange string cMensajeEsperado = $"Si hubieras pedido en Fedex te hubiera costado $20 más barato."; var lstEmpresas = ObtenerEmpresas(80m); var DOCIMetodoEnvioPedido = new Mock <IMetodoEnvio>(); DOCIMetodoEnvioPedido.Setup(m => m.metodoEnvioDTO).Returns(new MetodoEnvioDTO { cNombre = "Tren" }); DOCIMetodoEnvioPedido.Setup(m => m.CalcularCostoEnvio(It.IsAny <decimal>(), It.IsAny <decimal>())).Returns(100m); IEmpresa empresaPedido = new DHL(DOCIMetodoEnvioPedido.Object, new EmpresaDTO { cNombre = "DHL" }); var SUT = new VerificadorEconomicoMismoMedio(); //Act string cMensaje = SUT.ObtenerOpcionMasEconomica(empresaPedido, lstEmpresas, It.IsAny <decimal>()); //Assert Assert.AreEqual(cMensajeEsperado, cMensaje); }
public void ObtenerOpcionMasEconomica_NoExisteOtraEmpresaMismoMedioTransporte_MensajeVacio() { //Arrange string cMensajeEsperado = string.Empty; var lstEmpresas = ObtenerEmpresas(80m); var DOCIMetodoEnvioPedido = new Mock <IMetodoEnvio>(); DOCIMetodoEnvioPedido.Setup(m => m.metodoEnvioDTO).Returns(new MetodoEnvioDTO { cNombre = "Barco" }); DOCIMetodoEnvioPedido.Setup(m => m.CalcularCostoEnvio(It.IsAny <decimal>(), It.IsAny <decimal>())).Returns(100m); IEmpresa empresaPedido = new DHL(DOCIMetodoEnvioPedido.Object, new EmpresaDTO { cNombre = "DHL" }); var SUT = new VerificadorEconomicoMismoMedio(); //Act string cMensaje = SUT.ObtenerOpcionMasEconomica(empresaPedido, lstEmpresas, It.IsAny <decimal>()); //Assert Assert.AreEqual(cMensajeEsperado, cMensaje); }
public void RastrearPedidos() { string cRutaPedidos = @"..\..\Pedidos.txt"; string cEstadoPedido = string.Empty; string cRangoTiempo = string.Empty; string cCosto = string.Empty; string cRespuesta = string.Empty; List <IEmpresa> lstEmpresas; List <IMetodoEnvio> lstMetodosEnvio; IEmpresa empresaPedido; IPresentadorDatos presentador = new Presentadores.PresentadorDatos(); DateTime dtActual = DateTime.Now; try { #region [Instancias de clases] CreadorEmpresas creadorEmpresas = new CreadorEmpresas(); CreadorMetodosEnvio creadorMetodosEnvio = new CreadorMetodosEnvio(); CreadorRangosTiempo creadorRangosTiempo = new CreadorRangosTiempo(); CreadorValidaciones credorValidaciones = new CreadorValidaciones(); IConvertidorPedido convertidorPedido = new ConvertidorPedido(); ILectorArchivo lectorArchivo = new LectorArchivoTexto(convertidorPedido); CreadorValidaciones validaciones = new CreadorValidaciones(); ContextColor contextColor = new ContextColor(); IVerificadorEstadoPaquete verificadorEstadoPaquete = new VerificadorEstadoPaquete(dtActual); IVerificadorCostoEconomico verificadorEconomico = new VerificadorEconomicoMismoMedio(); #endregion IRangoTiempo rangoTiempo = creadorRangosTiempo.ConfigurarRangosTiempo(); IValidadorPedido validadorPedido = validaciones.CrearCadenaValidaciones(); List <PedidoDTO> lstPedidos = lectorArchivo.LeerArchivoAListaPedidos(cRutaPedidos); lstMetodosEnvio = creadorMetodosEnvio.CrearMetodoEnvio(); lstEmpresas = creadorEmpresas.GenerarEmpresas(lstMetodosEnvio); foreach (var pedido in lstPedidos) { cRespuesta = validadorPedido.RealizarValidacion(new List <PedidoDTO> { pedido }, lstEmpresas); if (string.IsNullOrWhiteSpace(cRespuesta)) { empresaPedido = lstEmpresas.Where(e => e.empresaDTO.cNombre.ToLower() == pedido.cPaqueteria.ToLower().Trim()).FirstOrDefault(); cEstadoPedido = empresaPedido.ObtenerEstadoPaquete(pedido, verificadorEstadoPaquete); cRangoTiempo = empresaPedido.CalcularRangoTiempo(pedido, dtActual, rangoTiempo); cCosto = empresaPedido.ObtenerCosto(pedido.dDistancia, verificadorEstadoPaquete); AplicarColorPorPedido(verificadorEstadoPaquete.VerificarPaqueteEntregado(), contextColor); cRespuesta = $"{cEstadoPedido} {cRangoTiempo} {cCosto} (cualquier reclamación con {empresaPedido.empresaDTO.cNombre})."; string cOpcionEconomica = verificadorEconomico.ObtenerOpcionMasEconomica(empresaPedido, lstEmpresas, pedido.dDistancia); if (!string.IsNullOrWhiteSpace(cOpcionEconomica)) { cRespuesta += $"\n*{cOpcionEconomica}"; } } else { AplicarColorValidacion(contextColor); } presentador.MostrarDatos(cRespuesta); } } catch (Exception excepcion) { presentador.MostrarDatos(excepcion.Message.Trim()); } }