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)); }
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); }
public async Task <ActionResult <ExchangeRateResponse> > GetForeignCurrencyConversionAsync( [FromQuery] ForeignCurrencyConversionRequest request ) { return(Ok(await _exchangeRateService.GetForeignCurrencyConversionAsync(request))); }