public async void GetRateAsync_ShouldReturnValidModel() { // Arrange string baseCurrency = "CAD"; string quoteCurrency = "EUR"; string date = "2020-02-15"; decimal rate = 0.9877M; var expected = new CurrenciesRateApiModel() { Rates = { { quoteCurrency, rate } }, Base = baseCurrency, Date = date }; _currenciesRateRepositoryMock.Setup(x => x.GetRateAsync(baseCurrency, quoteCurrency, date)) .ReturnsAsync(rate); //Act var actual = await _sut.GetRateAsync(baseCurrency, quoteCurrency, date); //Assert Assert.True(actual != null); Assert.Equal(expected.Rates, actual.Rates); Assert.Equal(expected.Base, actual.Base); Assert.Equal(expected.Date, actual.Date); }
public async Task <CurrenciesRateApiModel> GetRateAsync(string baseCurrency, string quoteCurrency, string date) { decimal rate = await _currenciesRateRepository.GetRateAsync(baseCurrency, quoteCurrency, date); CurrenciesRateApiModel apiModel = new CurrenciesRateApiModel(); apiModel.Rates.Add(quoteCurrency, rate); apiModel.Base = baseCurrency; apiModel.Date = date; return(apiModel); }
public async Task <CurrenciesRateApiModel> Get(string date) { try { var allUrlKeyValues = ControllerContext.Request.GetQueryNameValuePairs(); string baseCurrency = allUrlKeyValues.LastOrDefault(x => x.Key == "base").Value; string quoteCurrency = allUrlKeyValues.LastOrDefault(x => x.Key == "symbols").Value; CurrenciesRateApiModel model = await _dataProcessor.GetRateAsync(baseCurrency, quoteCurrency, date); return(model); } catch { throw new HttpResponseException(HttpStatusCode.NotFound); } }