예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
            }
        }