public void ShouldSkipPublishingIfNoAnyBindingsInfo()
        {
            // Arrange
            var rmqPublisherServiceMock = Substitute.For <IRmqPublisher>();

            var configDic = new Dictionary <string, string>
            {
                { "Config:Application:UrlTemplate", "http://testSite/{0}/{1}/{2}" },
                { "Config:Application:Sequences", "['0..2', '3..6', '4..5']" },

                { "Config:Binding:SenderExchange", "" },
                { "Config:Binding:SenderRoutingKeys", "" }
            };

            var builder = new ConfigurationBuilder()
                          .AddInMemoryCollection(configDic);

            var fakeConfiguration = builder
                                    .Build();

            var fakeConfigurationSection = fakeConfiguration.GetSection("Config");

            var sut = new UrlsGeneratorEngine(rmqPublisherServiceMock, fakeConfigurationSection);

            // Act
            sut.Start();
        }
        public void ShouldGenerateUrlsBasedOnProperties()
        {
            // Arrange
            var rmqPublisherServiceMock = Substitute.For <IRmqPublisher>();

            var configDic = new Dictionary <string, string>
            {
                { "Config:Application:UrlTemplate", "http://testSite/{0}/{1}/{2}" },
                { "Config:Application:Sequences", "['0..2', '3..6', '4..5']" },

                { "Config:Binding:SenderExchange", "TargetExchange" },
                { "Config:Binding:SenderRoutingKeys", "['A', 'B']" }
            };

            var builder = new ConfigurationBuilder()
                          .AddInMemoryCollection(configDic);

            var fakeConfiguration = builder
                                    .Build();

            var fakeConfigurationSection = fakeConfiguration.GetSection("Config");

            var sut = new UrlsGeneratorEngine(rmqPublisherServiceMock, fakeConfigurationSection);

            // Act
            sut.Start();

            // Assert
            rmqPublisherServiceMock
            .Received()
            .Publish(Arg.Is <byte[]>(e => Encoding.UTF8.GetString(e) == "http://testSite/0/3/4"),
                     Arg.Is("TargetExchange"),
                     Arg.Is("A"));

            rmqPublisherServiceMock
            .Received()
            .Publish(Arg.Is <byte[]>(e => Encoding.UTF8.GetString(e) == "http://testSite/1/4/5"),
                     Arg.Is("TargetExchange"),
                     Arg.Is("B"));

            rmqPublisherServiceMock
            .Received(24)
            .Publish(Arg.Any <byte[]>(),
                     Arg.Any <string>(),
                     Arg.Is("B"));
        }