public void Create_should_return_valid_context()
        {
            var channel    = NSubstitute.Substitute.For <IModel>();
            var references = new QueueReferences("exchange", "queue", "routingKey", "deadletterExch", "deadLetterQ");

            var pool = NSubstitute.Substitute.For <IPublisherChannelContextPool>();

            var ctx = new PublisherChannelContext(channel, references, pool);

            pool.Get(references)
            .Returns(ctx);

            var factory = NSubstitute.Substitute.For <IQueueReferenceFactory>();

            factory.Create((IMessage)null)
            .ReturnsForAnyArgs(references);

            var sut = new PublisherChannelFactory(pool, factory);

            var message = DummyMessage.New();
            var result  = sut.Create(message);

            result.Should().NotBeNull();
            result.Channel.Should().Be(channel);
            result.QueueReferences.Should().Be(references);
        }
        public void Create_should_throw_when_argument_null()
        {
            var pool    = NSubstitute.Substitute.For <IPublisherChannelContextPool>();
            var factory = NSubstitute.Substitute.For <IQueueReferenceFactory>();

            var sut = new PublisherChannelFactory(pool, factory);

            Assert.Throws <ArgumentNullException>(() => sut.Create(null));
        }
        public void Create_should_return_valid_context()
        {
            var connection = NSubstitute.Substitute.For <IBusConnection>();
            var factory    = NSubstitute.Substitute.For <IQueueReferenceFactory>();
            var references = new QueueReferences("exchange", "queue", "deadletterExch", "deadLetterQ");

            factory.Create(null)
            .ReturnsForAnyArgs(references);

            var sut = new PublisherChannelFactory(connection, factory);

            var message = DummyMessage.New();
            var result  = sut.Create(message);

            result.Should().NotBeNull();
            result.Channel.Should().NotBeNull();
            result.QueueReferences.Should().Be(references);
        }