public async Task GetCurrencyConversionRatesAsync_WithInternalServerError_ThrowsException()
        {
            var configurationProvider = GetConfigurationProvider();

            var exchangeRateRepo = new ExchangeRateServiceAdapter(configurationProvider.Object, new JsonDotNetSerializer(new JsonSerializer()), new RecyclableStreamPool(), CreateInternalServerErrorHttpResponseConnector().Object);
            await Assert.ThrowsAsync <CommunicationException>(async() => await exchangeRateRepo.GetCurrencyConversionRatesAsync());
        }
        public async Task GetCurrencyConversionRatesAsync_WithNoHttpDefaultsSet_ShouldReturnResults()
        {
            var configurationProvider = GetConfigurationProvider();

            var exchangeRateRepo = new ExchangeRateServiceAdapter(configurationProvider.Object, new JsonDotNetSerializer(new JsonSerializer()), new RecyclableStreamPool(), GetConnectorWithSuccessfulResponseWithSettings().Object);
            var exchangeRates    = await exchangeRateRepo.GetCurrencyConversionRatesAsync();

            Assert.NotNull(exchangeRates);
            Assert.True(exchangeRates.Keys.Count > 0);
        }
        public async Task GetCurrencyConversionRatesAsync_WithMissingConfiguration_ThrowsException()
        {
            var configurationProvider = new Mock <IConfigurationProvider>();

            configurationProvider.Setup(x => x.GetGlobalConfigurationAsync <ServiceSettings>(Constants.ConfigurationSections.ExternalServiceConfigurations, Constants.TenantSettings.ExchangeRateService))
            .ReturnsAsync(null);

            SetHttpDefaults();

            var exchangeRateRepo = new ExchangeRateServiceAdapter(configurationProvider.Object);
            await Assert.ThrowsAsync <ExchangeRateMissingConfiguration>(async() => await exchangeRateRepo.GetCurrencyConversionRatesAsync());
        }
        public async Task GetCurrencyConversionRatesAsync_WithHttpDefaultsSet_ShouldReturnResults()
        {
            var configurationProvider = GetConfigurationProvider();

            SetHttpDefaults();

            var exchangeRateRepo = new ExchangeRateServiceAdapter(configurationProvider.Object);
            var exchangeRates    = await exchangeRateRepo.GetCurrencyConversionRatesAsync();

            Assert.NotNull(exchangeRates);
            Assert.True(exchangeRates.Keys.Count > 0);
        }