public void RollbackMethodHappyPath()
        {
            var mockTransaction             = new Mock <ISenderTransaction>();
            Action <SenderMessage> validate = message => { };

            ValidatingSenderTransaction validatingTransaction = typeof(ValidatingSenderTransaction).New(mockTransaction.Object, validate);

            validatingTransaction.Rollback();

            mockTransaction.Verify(m => m.Rollback(), Times.Once());
        }
        public void AddMethodHappyPath()
        {
            var sentMessages = new List <SenderMessage>();

            var mockTransaction             = new Mock <ISenderTransaction>();
            Action <SenderMessage> validate = message => sentMessages.Add(message);

            ValidatingSenderTransaction validatingTransaction = typeof(ValidatingSenderTransaction).New(mockTransaction.Object, validate);

            var message1 = new SenderMessage("Hello, world!");
            var message2 = new SenderMessage("Good-bye, cruel world!");

            validatingTransaction.Add(message1);
            validatingTransaction.Add(message2);

            mockTransaction.Verify(m => m.Add(message1), Times.Once());
            mockTransaction.Verify(m => m.Add(message2), Times.Once());

            sentMessages.Should().HaveCount(2);
            sentMessages[0].Should().Be(message1);
            sentMessages[1].Should().Be(message2);
        }