public async Task GetRatesReturnsLatestAmountWhenJustOneRateIsSetup() { //Arrange const string baseSymbol = "USD"; const string targetSymbol = "EUR"; const decimal latestRate = 1.1m; var context = CreateEmptyContext(); context.ExchangeRates.Add(new ExchangeRate(baseSymbol, targetSymbol, latestRate) { Id = Guid.NewGuid() }); await context.SaveChangesAsync(); var service = new ExchangeRateReadingService(context); //Act var rates = await service.GetRatesAsync(baseSymbol, targetSymbol); //Assert Assert.IsNotNull(rates); Assert.IsNotNull(rates.Rates); Assert.AreEqual(baseSymbol, rates.BaseSymbol); Assert.AreEqual(1, rates.Rates.Count); Assert.IsTrue(rates.Rates.ContainsKey(targetSymbol)); Assert.AreEqual(latestRate, rates.Rates[targetSymbol]); }
public async Task GetRatesReturnsEmptyRateGivenNoRatesAreSetup() { //Arrange const string baseSymbol = "USD"; const string targetSymbol = "EUR"; var context = CreateEmptyContext(); var service = new ExchangeRateReadingService(context); //Act var rates = await service.GetRatesAsync(baseSymbol, targetSymbol); //Assert Assert.IsNotNull(rates); Assert.IsNotNull(rates.Rates); Assert.AreEqual(baseSymbol, rates.BaseSymbol); Assert.AreEqual(1, rates.Rates.Count); Assert.IsTrue(rates.Rates.ContainsKey(targetSymbol)); Assert.AreEqual(null, rates.Rates[targetSymbol]); }
public async Task <IActionResult> GetLatest(string @base, string[] symbols) { var rate = await _exchangeRateReadingService.GetRatesAsync(@base, symbols); return(Ok(rate)); }