Beispiel #1
0
        public async Task GetForeignCurrencyConversionWhenResponseIsNotNullTest()
        {
            var request = new ForeignCurrencyConversionRequest
            {
                Amount          = 10,
                Currency        = Currency.USD,
                CustomerSegment = CustomerSegment.RETAIL
            };

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

            _exchangeRatePerSegmentMock.Setup(setup => setup.Value)
            .Returns(ExchangeRatePerSegmentBuilder.ExchangeRatePerSegment);

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

            Assert.IsType <ExchangeRateResponse>(method);
        }
        public async Task GetForeignCurrencyConversionWhenResponseIsSuccessTest()
        {
            var request = new ForeignCurrencyConversionRequest
            {
                Amount          = 10,
                Currency        = Currency.USD,
                CustomerSegment = CustomerSegment.RETAIL
            };

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

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

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

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

                return(null);
            }

            var exchangeRate = new ExchangeRate(
                request.Amount,
                foreignExchangeRate.Rates.BrazilianReal,
                request.CustomerSegment,
                _exchangeRatePerSegment
                );
            var calculateForeignCurrencyConversion = exchangeRate.CalculateForeignCurrencyConversion();

            return(new ExchangeRateResponse(calculateForeignCurrencyConversion));
        }
Beispiel #4
0
        public async Task GetForeignCurrencyConversionWhenExternalForeignExchangeRatesIsNullTest()
        {
            var request = new ForeignCurrencyConversionRequest
            {
                Amount          = 10,
                Currency        = Currency.USD,
                CustomerSegment = CustomerSegment.RETAIL
            };
            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.GetForeignCurrencyConversionAsync(request);

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