public void ShouldThrowOnCurrentIfNoPendingMessages()
        {
            var pipeline = new ResponsePipeline(null);

            var exc = Record.Exception(() => pipeline.Peek());

            exc.Should().BeOfType <InvalidOperationException>();
        }
        public void ShouldDequeueResponseHandlersInOrder()
        {
            var(msg1, handler1) = (new Mock <IRequestMessage>(), new Mock <IResponseHandler>());
            var(msg2, handler2) = (new Mock <IRequestMessage>(), new Mock <IResponseHandler>());
            var pipeline = new ResponsePipeline(null);

            pipeline.Enqueue(msg1.Object, handler1.Object);
            pipeline.Enqueue(msg2.Object, handler2.Object);

            pipeline.HasNoPendingMessages.Should().BeFalse();
            pipeline.Peek().Should().Be(handler1.Object);
            pipeline.Dequeue();

            pipeline.HasNoPendingMessages.Should().BeFalse();
            pipeline.Peek().Should().Be(handler2.Object);
            pipeline.Dequeue();

            pipeline.HasNoPendingMessages.Should().BeTrue();
        }
        public void ShouldEnqueueResponseHandlers()
        {
            var(msg, handler) = (new Mock <IRequestMessage>(), new Mock <IResponseHandler>());
            var pipeline = new ResponsePipeline(null);

            pipeline.Enqueue(msg.Object, handler.Object);

            pipeline.HasNoPendingMessages.Should().BeFalse();
            pipeline.Peek().Should().Be(handler.Object);
        }