public void For_AddRule_When_ErrorMessageIsNull_Then_ExceptionIsThrown()
        {
            // Arrange:
            var memberInfo = CreateTestMemberInfo();
            var validator  = new PropertyValidatorBaseTestImpl <string>(memberInfo);
            Predicate <string> anyPredicate = s => s != null;

            // Act:
            Assert.Throws <ArgumentNullException>(() => validator.AddRule(anyPredicate, null, null));
        }
        public void For_AddRule_When_PredicateIsNull_Then_ExceptionIsThrown()
        {
            // Arrange:
            var memberInfo = CreateTestMemberInfo();
            var validator  = new PropertyValidatorBaseTestImpl <string>(memberInfo);
            Predicate <string> predicate = null;

            // Act:
            Assert.Throws <ArgumentNullException>(() => validator.AddRule(predicate, It.IsAny <string>(), null));
        }
        public void For_AddRule_When_ProvidedArgumentsAreValid_Then_ValidationTaskIsAdded()
        {
            // Arrange:
            var memberInfo = CreateTestMemberInfo();
            var validator  = new PropertyValidatorBaseTestImpl <string>(memberInfo);
            Predicate <string> anyPredicate = s => s != null;
            const string       errorMessage = "SOME ERROR MESSAGE";

            // Act:
            validator.AddRule(anyPredicate, errorMessage, null);

            // Assert:
            validator.GetValidationTasksTestMethod().Count.Should().Be(1);
            var validationTask = validator.GetValidationTasksTestMethod().First();

            validationTask.IsOtherValidator.Should().Be(false);
            validationTask.StopValidationAfterFailure.Should().Be(false);
            validationTask.Validator.Should().NotBeNull();
        }