public void Execute_BothFailureAndSuccessValidationRuleReturnedTest()
        {
            var emailMessage = new EmailMessage
            {
                From     = "*****@*****.**",
                Subject  = "Some Email Subject",
                To       = "*****@*****.**",
                HtmlBody = "<b>Hello</b>"
            };
            var mockValidationRule1 = new Mock <IEmailValidationRule>();
            var mockValidationRule2 = new Mock <IEmailValidationRule>();

            mockValidationRule1
            .Setup(x => x.Validate(emailMessage))
            .Returns(ValidationResult.Success);
            mockValidationRule2
            .Setup(x => x.Validate(emailMessage))
            .Returns(ValidationResult.Failed("From Email Address Invalid"));
            var validationRules = new List <IEmailValidationRule>
            {
                mockValidationRule1.Object,
                mockValidationRule2.Object
            };

            var emailValidator = new EmailValidator(validationRules);
            var results        = emailValidator.Execute(emailMessage);

            Assert.NotNull(results);
            Assert.False(results.IsSuccess);
            Assert.True(results.FailureReasons.Length == 1);
        }
 private void HandleValidateEmailMsg(ValidateEmailMsg msg)
 {
     Persist(msg, validateEmailMsg =>
     {
         var result = _emailValidator.Execute(_mapper.Map <EmailMessage>(msg.Email));
         if (result.IsSuccess)
         {
             var emailQualifyMsg = new EmailQualifyMsg(
                 validateEmailMsg.RequestId,
                 validateEmailMsg.Email,
                 validateEmailMsg.MessageType
                 );
             Context.Parent.Tell(emailQualifyMsg, Self);
         }
         else
         {
             var emailQualifyMsg = new EmailDisqualifiedMsg(
                 validateEmailMsg.RequestId,
                 validateEmailMsg.Email,
                 validateEmailMsg.MessageType,
                 result.FailureReasons
                 );
             Context.Parent.Tell(emailQualifyMsg, Self);
         }
     });
 }
        public void Execute_NoValidationRuleIsPassedToValidatorTest()
        {
            var emailMessage = new EmailMessage
            {
                From     = "*****@*****.**",
                Subject  = "Some Email Subject",
                To       = "*****@*****.**",
                HtmlBody = "<b>Hello</b>"
            };

            var emailValidator = new EmailValidator(new List <IEmailValidationRule>());
            var results        = emailValidator.Execute(emailMessage);

            Assert.NotNull(results);
            Assert.True(results.IsSuccess);
            Assert.True(results.FailureReasons.Length == 0);
        }