示例#1
0
        public async Task <QuoteCurrencyResult> GetQuote(string sourceCurrency, List <string> destinationCurrencies)
        {
            CurrencyLayerResult currencyLayerResult = await quoteProvider.GetCurrencyValues(sourceCurrency, destinationCurrencies);

            var result = ParseCurrencyLayerResult(currencyLayerResult);

            return(result);
        }
示例#2
0
        public async Task ParsedResultTestOk()
        {
            var quoteProvider = Substitute.For <IQuoteProvider>();

            var currencySource = "BRL";
            var currencyQuotes = new List <string>()
            {
                "USD", "AUD", "CAD", "PLN", "MXN"
            };

            var fakeResult = new CurrencyLayerResult()
            {
                Success   = true,
                Terms     = "https://currencylayer.com/terms",
                Privacy   = "https://currencylayer.com/privacy",
                Timestamp = 1533403523,
                Source    = currencySource,
                Quotes    = new Dictionary <string, double> {
                    { "BRLUSD", 1.300102 },
                    { "BRLAUD", 1.756633 },
                    { "BRLCAD", 1.691108 },
                    { "BRLPLN", 4.790361 },
                    { "BRLMXN", 24.124743 }
                },
                Error = null
            };

            quoteProvider
            .GetCurrencyValues(currencySource, currencyQuotes)
            .Returns(fakeResult);

            var currencyLayerService = new QuoteCurrencyService(quoteProvider);
            var quoteResult          = await currencyLayerService.GetQuote(currencySource, currencyQuotes);

            Assert.Equal(currencySource, quoteResult.Source);

            foreach (var quoteItem in quoteResult.Quotes)
            {
                var quoteName = $"{currencySource}{quoteItem.CurrencyName}";
                Assert.Equal(fakeResult.Quotes[quoteName], quoteItem.CurrencyValue);
            }
        }
示例#3
0
        public async void TestWithSuccess()
        {
            var quoteProvider = Substitute.For <IQuoteProvider>();

            var currencySource = "BRL";
            var currencyQuotes = new List <string>()
            {
                "USD", "AUD", "CAD", "PLN", "MXN"
            };

            var fakeResult = new CurrencyLayerResult()
            {
                Success   = true,
                Terms     = "https://currencylayer.com/terms",
                Privacy   = "https://currencylayer.com/privacy",
                Timestamp = 1533403523,
                Source    = currencySource,
                Quotes    = new Dictionary <string, double> {
                    { "BRLUSD", 0.269757 }
                },
                Error = null
            };

            quoteProvider
            .GetCurrencyValues(currencySource, currencyQuotes)
            .ReturnsForAnyArgs(fakeResult);

            var currencyLayerService = new QuoteCurrencyService(quoteProvider);
            var controller           = new QuoteController(currencyLayerService);
            var controllerResult     = await controller.GetQuotes(currencySource, "USD");

            Assert.IsType <OkObjectResult>(controllerResult);
            var quoteCurrencyResult = (QuoteCurrencyResult)((OkObjectResult)controllerResult).Value;

            Assert.Equal(currencySource, quoteCurrencyResult.Source);
            Assert.Single(quoteCurrencyResult.Quotes);
            Assert.Equal("USD", quoteCurrencyResult.Quotes[0].CurrencyName);
            Assert.Equal(0.269757, quoteCurrencyResult.Quotes[0].CurrencyValue);
        }
示例#4
0
        private QuoteCurrencyResult ParseCurrencyLayerResult(CurrencyLayerResult currencyLayerResult)
        {
            var result = new QuoteCurrencyResult()
            {
                Quotes = new List <Quote>()
            };

            result.Source = currencyLayerResult.Source;

            foreach (KeyValuePair <string, double> quote in currencyLayerResult.Quotes)
            {
                var currencyName = quote.Key;
                currencyName = currencyName.Replace(result.Source, "");

                result.Quotes.Add(new Quote()
                {
                    CurrencyName  = currencyName,
                    CurrencyValue = quote.Value
                });
            }

            return(result);
        }