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>()
            });

            ICurrencyRatesReceiver receiver = new CurrencyRatesReceiver(config, httpClientFactory);

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

            await Assert.ThrowsAsync <BadRequestException>(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);
        }