public void CtorEmptyTopicConfig_ArgumentNullException()
        {
            var topicsConfig    = new TopicsConfig();
            var consumerConfig  = new ConsumerConfig();
            var producerConfigs = new ProducerConfigs()
            {
                { new ProducerConfig {
                      Environment = "TestTierProducer1", ClusterId = "TestClusterProducer1", Urls = "TestUrlsProducer1"
                  } },
                { new ProducerConfig {
                      Environment = "TestTierProducer2", ClusterId = "TestClusterProducer2", Urls = "TestUrlsProducer2"
                  } }
            };

            var provider      = new Mock <IServiceProvider>();
            var topicsOptions = new Mock <IOptions <TopicsConfig> >();

            topicsOptions.SetupGet(c => c.Value).Returns(topicsConfig);
            var consumerConfigOptions = new Mock <IOptions <ConsumerConfig> >();

            consumerConfigOptions.SetupGet(c => c.Value).Returns(consumerConfig);
            var producerConfigsOptions = new Mock <IOptions <ProducerConfigs> >();

            producerConfigsOptions.SetupGet(c => c.Value).Returns(producerConfigs);

            Action act = () => new FeedProxiesRunnerTestDecorator(provider.Object, topicsOptions.Object,
                                                                  consumerConfigOptions.Object, producerConfigsOptions.Object);

            act.Should().Throw <ArgumentNullException>().And.ParamName.Should().Be("topicsOptions");
        }
        public void CtorEmptyProducerConfig_ArgumentNullException()
        {
            var topicsConfig = new TopicsConfig()
            {
                "topic1", "topic2", "topic3"
            };
            var consumerConfig  = new ConsumerConfig();
            var producerConfigs = new ProducerConfigs();

            var provider      = new Mock <IServiceProvider>();
            var topicsOptions = new Mock <IOptions <TopicsConfig> >();

            topicsOptions.SetupGet(c => c.Value).Returns(topicsConfig);
            var consumerConfigOptions = new Mock <IOptions <ConsumerConfig> >();

            consumerConfigOptions.SetupGet(c => c.Value).Returns(consumerConfig);
            var producerConfigsOptions = new Mock <IOptions <ProducerConfigs> >();

            producerConfigsOptions.SetupGet(c => c.Value).Returns(producerConfigs);

            Action act = () => new FeedProxiesRunnerTestDecorator(provider.Object, topicsOptions.Object,
                                                                  consumerConfigOptions.Object, producerConfigsOptions.Object);

            act.Should().Throw <ArgumentNullException>().And.ParamName.Should().Be("producerOptions");
        }
        public async Task ExecuteAsync_AllRunned(int topicCount)
        {
            var faker = new Faker();

            var topics = new TopicsConfig(faker.Random.WordsArray(topicCount));

            var runner = Create.FeedProxiesRunner().SetTopics(topics).Get();

            await runner.ExecuteAsyncWrap();

            runner.FeedProxies.Count.Should().Be(topicCount);
        }
        public void CtorCommon_SameConfigsSuccess()
        {
            var topicsConfig = new TopicsConfig()
            {
                "topic1", "topic2", "topic3"
            };
            var consumerConfig = new ConsumerConfig()
            {
                Environment = "TestTier", ClusterId = "TestCluster", Urls = "TestUrls"
            };
            var producerConfigs = new ProducerConfigs()
            {
                { new ProducerConfig {
                      Environment = "TestTierProducer1", ClusterId = "TestClusterProducer1", Urls = "TestUrlsProducer1"
                  } },
                { new ProducerConfig {
                      Environment = "TestTierProducer2", ClusterId = "TestClusterProducer2", Urls = "TestUrlsProducer2"
                  } }
            };

            var provider      = new Mock <IServiceProvider>();
            var topicsOptions = new Mock <IOptions <TopicsConfig> >();

            topicsOptions.SetupGet(c => c.Value).Returns(topicsConfig);
            var consumerConfigOptions = new Mock <IOptions <ConsumerConfig> >();

            consumerConfigOptions.SetupGet(c => c.Value).Returns(consumerConfig);
            var producerConfigsOptions = new Mock <IOptions <ProducerConfigs> >();

            producerConfigsOptions.SetupGet(c => c.Value).Returns(producerConfigs);

            var runner = new FeedProxiesRunnerTestDecorator(provider.Object, topicsOptions.Object,
                                                            consumerConfigOptions.Object, producerConfigsOptions.Object);

            runner.Topics.Should().BeEquivalentTo(topicsConfig);
            runner.ConsumerConfig.Should().BeEquivalentTo(consumerConfig);
            runner.ProducerConfigs.Should().BeEquivalentTo(producerConfigs);
        }
 public FeedProxiesRunnerBuilder SetTopics(TopicsConfig topicsConfig)
 {
     _topicsConfig = topicsConfig;
     return(this);
 }