public async void CotizacionMonedaTest()
        {
            // Arrange
            var expected = new CotizacionDtoResponse()
            {
                CambioVenta = 1, CambioCompra = 2, FechaActualizacion = "08/06/2020"
            };
            var loggerMock     = new Mock <ILogger <CotizacionMonedaController> >();
            var mockRepository = new Mock <ICotizacionMoneda>();

            mockRepository.Setup(x => x.GetCotizacion(It.IsAny <string>()))
            .Returns(Task.FromResult(new CotizacionDtoResponse()
            {
                CambioVenta = 1, CambioCompra = 2, FechaActualizacion = "08/06/2020"
            }));

            var controller = new  CotizacionMonedaController(mockRepository.Object, loggerMock.Object);

            //act
            var actionResult = await controller.GetCotizacion("Dolar");

            var actual = (CotizacionDtoResponse)((ObjectResult)actionResult).Value;

            //Assert
            Assert.Equal(expected.CambioCompra, actual.CambioCompra);
            Assert.Equal(expected.CambioVenta, actual.CambioVenta);
            Assert.Equal(expected.FechaActualizacion, actual.FechaActualizacion);
        }
Example #2
0
        public async Task <CotizacionDtoResponse> GetCotizacion(string moneda)
        {
            CotizacionDtoResponse result = null;
            var request = new HttpRequestMessage(HttpMethod.Get,
                                                 "https://www.bancoprovincia.com.ar/Principal/Dolar");

            var client   = _clientFactory.CreateClient("virtualMind");
            var response = await client.SendAsync(request);

            if (response.IsSuccessStatusCode)
            {
                using (var stream = await response.Content.ReadAsStreamAsync())
                {
                    var jsonReader     = new JsonTextReader(new StreamReader(stream));
                    var objDeserialize = new JsonSerializer().Deserialize <string[]>(jsonReader);
                    if (objDeserialize != null)
                    {
                        var objServiceResponse = new CotizacionDto()
                        {
                            CambioDolarCompra  = Convert.ToDecimal(objDeserialize[0]),
                            CambioDolarVenta   = Convert.ToDecimal(objDeserialize[1]),
                            FechaActualizacion = objDeserialize[2]
                        };

                        result = moneda.ToLower() switch
                        {
                            "dolar" => new CotizacionDtoResponse()
                            {
                                CambioCompra       = objServiceResponse.CambioDolarCompra,
                                CambioVenta        = objServiceResponse.CambioDolarVenta,
                                FechaActualizacion = objServiceResponse.FechaActualizacion
                            },
                            "real" => new CotizacionDtoResponse()
                            {
                                CambioCompra       = Math.Round(objServiceResponse.CambioDolarCompra / 4, 2),
                                CambioVenta        = Math.Round(objServiceResponse.CambioDolarVenta / 4, 2),
                                FechaActualizacion = objServiceResponse.FechaActualizacion
                            },
                            _ => null
                        };
                    }
                }
            }

            return(await Task.FromResult(result));
        }
    }