/// <inheritdoc /> public async Task <OperationResult <CurrencyRate> > GetRate(CurrencyRequest request) { try { CurrencyDateCalculationResult currencyDateCalculationResult = this.currencyDateCalculator.Calculate(request); if (currencyDateCalculationResult == null) { return(OperationResult <CurrencyRate> .FromFail("Не удалось получить результат проверки запроса курса валюты")); } if (currencyDateCalculationResult.Success == false || currencyDateCalculationResult.Date.HasValue == false) { return(OperationResult <CurrencyRate> .FromFail(currencyDateCalculationResult.ErrorMessage)); } CurrencyRate currencyRate = await this.currencyProvider.GetRate(currencyDateCalculationResult.Date.Value, request.Code); return(currencyRate != null ? OperationResult <CurrencyRate> .FromSuccess(currencyRate) : OperationResult <CurrencyRate> .FromFail("Не удалось получить курс валюты")); } catch (Exception e) { this.logger.LogError(e, "Произошла ошибка при получении курса валюты"); return(OperationResult <CurrencyRate> .FromFail("Произошла ошибка при получении курса валюты")); } }
private static ICurrencyDateCalculator GetCurrencyDateCalculator(CurrencyDateCalculationResult needResult) { Mock <ICurrencyDateCalculator> currencyDateCalculator = new Mock <ICurrencyDateCalculator>(); currencyDateCalculator.Setup(x => x.Calculate(It.IsAny <CurrencyRequest>())) .Returns(needResult); return(currencyDateCalculator.Object); }
public static async Task TestWhenCurrencyDateCalculationResultIsNotSuccess() { // Arrange CurrencyDateCalculationResult currencyDateCalculationResult = new CurrencyDateCalculationResult { Success = false, ErrorMessage = "Fail" }; CurrencyService currencyService = new CurrencyService(GetCurrencyProvider(null, null), GetCurrencyDateCalculator(currencyDateCalculationResult), GetLogger()); CurrencyRequest request = new CurrencyRequest { Code = "AUD", Y = 1, X = 1 }; // Act OperationResult <CurrencyRate> result = await currencyService.GetRate(request); // Assert Assert.NotNull(result); Assert.False(result.Success); Assert.True(string.IsNullOrEmpty(result.ErrorMessage) == false); }