public async Task GetQuoteForeignCurrencyWhenResponseIsSuccessTest()
        {
            var request = new QuoteForeignCurrencyRequest
            {
                Amount   = 10,
                Currency = Currency.USD
            };

            _exchangeRateServiceMock.Setup(setup => setup.GetQuoteForeignCurrencyAsync(request))
            .ReturnsAsync(ExchangeRateResponseBuilder.ExchangeRateResponse);

            var controller = new ExchangeRateController(_exchangeRateServiceMock.Object);
            var service    = await controller.GetQuoteForeignCurrencyAsync(request);

            Assert.IsType <OkObjectResult>(service.Result);
        }
        public async Task <ExchangeRateResponse> GetQuoteForeignCurrencyAsync(QuoteForeignCurrencyRequest request)
        {
            var foreignExchangeRate = await _foreignExchangeRatesService.GetLatestExchangeRateAsync(request.Currency);

            if (foreignExchangeRate == null)
            {
                _domainNotification.AddNotification("QuoteForeignCurrency", "Foreign Exchange Rates API request error");

                return(null);
            }

            var exchangeRate = new ExchangeRate(request.Amount, foreignExchangeRate.Rates.BrazilianReal);
            var calculateQuoteForeignCurrency = exchangeRate.CalculateQuoteForeignCurrency();

            return(new ExchangeRateResponse(calculateQuoteForeignCurrency));
        }
Example #3
0
        public async Task GetQuoteForeignCurrencyWhenResponseIsNotNullTest()
        {
            var request = new QuoteForeignCurrencyRequest
            {
                Amount   = 10,
                Currency = Currency.USD
            };

            _foreignExchangeRatesServiceMock.Setup(
                setup => setup.GetLatestExchangeRateAsync(request.Currency)
                ).ReturnsAsync(ForeignExchangeRatesResponseBuilder.ForeignExchangeRatesResponse(request.Currency));

            var service = new ExchangeRateService(
                _foreignExchangeRatesServiceMock.Object,
                _domainNotificationMock.Object,
                _exchangeRatePerSegmentMock.Object
                );
            var method = await service.GetQuoteForeignCurrencyAsync(request);

            Assert.IsType <ExchangeRateResponse>(method);
        }
Example #4
0
        public async Task GetQuoteForeignCurrencyWhenExternalForeignExchangeRatesIsNullTest()
        {
            var request = new QuoteForeignCurrencyRequest
            {
                Amount   = 10,
                Currency = Currency.USD
            };
            ForeignExchangeRatesResponse response = null;

            _foreignExchangeRatesServiceMock.Setup(
                setup => setup.GetLatestExchangeRateAsync(request.Currency)
                ).ReturnsAsync(response);

            var service = new ExchangeRateService(
                _foreignExchangeRatesServiceMock.Object,
                _domainNotificationMock.Object,
                _exchangeRatePerSegmentMock.Object
                );
            var method = await service.GetQuoteForeignCurrencyAsync(request);

            Assert.Null(method);
        }
Example #5
0
 public async Task <ActionResult <ExchangeRateResponse> > GetQuoteForeignCurrencyAsync(
     [FromQuery] QuoteForeignCurrencyRequest request
     )
 {
     return(Ok(await _exchangeRateService.GetQuoteForeignCurrencyAsync(request)));
 }