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_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);
        }
        public async Task GetCurrencyConversionRatesAsync_WithMissingUrlInConfiguration_ThrowsException()
        {
            var configurationProvider = new Mock <IConfigurationProvider>();

            configurationProvider.Setup(x => x.GetGlobalConfigurationAsync <ServiceSettings>(Constants.ConfigurationSections.ExternalServiceConfigurations, Constants.TenantSettings.ExchangeRateService))
            .ReturnsAsync(new ServiceSettings {
                Name = "", Endpoint = new Endpoint()
            });

            SetHttpDefaults();

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