public async Task When_DateFrom_Is_Lower_Than_90_Days_Should_Throw_Exception()
        {
            var config = ConfigFactory.GetConfig();
            var httpClientFactory = HttpClientFactoryProvider.GetHttpClientFactory(new CurrencyRateDto() { Rates = new List<Rate>() });

            ICurrencyRatesBetweenDatesReceiver receiver = new CurrencyRatesBetweenDatesReceiver(config, httpClientFactory);

            Task result() => receiver.GetCurrencyRatesBetweenDaysAsync(DateTime.UtcNow.Date.AddDays(-91), DateTime.UtcNow.Date.AddDays(-1));

            await Assert.ThrowsAsync<BadRequestException>(result);
        }
        public async Task Should_Return_Data_For_Valid_Request()
        {
            var config = ConfigFactory.GetConfig();
            var httpClientFactory = HttpClientFactoryProvider.GetHttpClientFactory(
                new List<CurrencyRateDto>() { new CurrencyRateDto() { Rates = new List<Rate>() } }
                );

            ICurrencyRatesBetweenDatesReceiver receiver = new CurrencyRatesBetweenDatesReceiver(config, httpClientFactory);

            var result = await receiver.GetCurrencyRatesBetweenDaysAsync(DateTime.UtcNow.Date.AddDays(-40), DateTime.UtcNow.Date.AddDays(-30));

            Assert.NotEmpty(result);
        }
        public async Task Should_Return_Anything_For_Valid_Request()
        {
            var config            = ConfigFactory.GetConfig();
            var httpClientFactory = HttpClientFactoryProvider.GetHttpClientFactory(new CurrencyRateDto()
            {
                Rates = new List <Rate>()
            });

            ICurrencyRatesReceiver receiver = new CurrencyRatesReceiver(config, httpClientFactory);

            var result = await receiver.GetCurrencyRatesAsync(DateTime.UtcNow.Date);

            Assert.NotEmpty(result);
        }
        public async Task When_Config_Is_Invalid_Should_Throw_Exception()
        {
            var options = new Mock <IOptions <CurrencyRatesConfig> >();

            var httpClientFactory = HttpClientFactoryProvider.GetHttpClientFactory(new CurrencyRateDto()
            {
                Rates = new List <Rate>()
            });

            ICurrencyRatesReceiver receiver = new CurrencyRatesReceiver(options.Object, httpClientFactory);

            Task result() => receiver.GetCurrencyRatesAsync(DateTime.UtcNow.Date);

            await Assert.ThrowsAsync <InvalidOperationException>(result);
        }