public void ValiDoc_WithMultipleRuleValidator_OutputMultipleRulesWithValidationMessage()
        {
            var validator = new MultipleRuleValidator();

            var ruleGenerator = new DocBuilder(new RuleDescriptionBuilder(new ValidatorErrorMessageBuilder(new FluentValidationHelpers())));

            var validationRules = ruleGenerator.Document(validator).ToList();

            var expectedOutput = new List <RuleDescriptor>
            {
                new RuleDescriptor
                {
                    MemberName = "First Name",
                    Rules      = new List <RuleDescription>
                    {
                        new RuleDescription
                        {
                            FailureSeverity   = "Error",
                            OnFailure         = "Continue",
                            ValidatorName     = "NotNullValidator",
                            ValidationMessage = "'First Name' must not be empty."
                        }
                    }
                },
                new RuleDescriptor
                {
                    MemberName = "Last Name",
                    Rules      = new List <RuleDescription>
                    {
                        new RuleDescription
                        {
                            FailureSeverity   = "Error",
                            OnFailure         = "Continue",
                            ValidatorName     = "NotEmptyValidator",
                            ValidationMessage = "'Last Name' should not be empty."
                        },
                        new RuleDescription
                        {
                            FailureSeverity   = "Error",
                            OnFailure         = "Continue",
                            ValidatorName     = "MinimumLengthValidator",
                            ValidationMessage = "'Last Name' must be more than {MinLength} characters. You entered {TotalLength} characters."
                        },
                        new RuleDescription
                        {
                            FailureSeverity   = "Error",
                            OnFailure         = "Continue",
                            ValidatorName     = "MaximumLengthValidator",
                            ValidationMessage = "'Last Name' must be less than {MaxLength} characters. You entered {TotalLength} characters."
                        }
                    }
                }
            };

            validationRules.Should().HaveCount(2);
            validationRules.ShouldBeEquivalentTo(expectedOutput, options => options.WithStrictOrdering());
        }
Пример #2
0
        public void RuleDescriptionBuilder_WithMultipleRuleValidator_ReturnsStructuredRuleDescription()
        {
            const string validationErrorMessage = "Mock message";
            var          validator    = new MultipleRuleValidator();
            var          propertyRule = validator.CreateDescriptor().GetRulesForMember(validator.CreateDescriptor().GetMembersWithValidators().Last().Key).First() as PropertyRule;
            var          propertyName = propertyRule.GetDisplayName();

            var mockValidatorErrorMessageBuilder = new Mock <IValidatorErrorMessageBuilder>();

            mockValidatorErrorMessageBuilder.Setup(m => m.GetErrorMessage(It.IsAny <IPropertyValidator>(), It.IsAny <PropertyRule>(), It.IsAny <string>()))
            .Returns(validationErrorMessage);

            var expectedOutput = new RuleDescriptor
            {
                MemberName = "Last Name",
                Rules      = new List <RuleDescription>
                {
                    new RuleDescription
                    {
                        FailureSeverity   = "Error",
                        OnFailure         = "Continue",
                        ValidationMessage = validationErrorMessage,
                        ValidatorName     = "NotEmptyValidator"
                    },
                    new RuleDescription
                    {
                        FailureSeverity   = "Error",
                        OnFailure         = "Continue",
                        ValidationMessage = validationErrorMessage,
                        ValidatorName     = "MinimumLengthValidator"
                    },
                    new RuleDescription
                    {
                        FailureSeverity   = "Error",
                        OnFailure         = "Continue",
                        ValidationMessage = validationErrorMessage,
                        ValidatorName     = "MaximumLengthValidator"
                    }
                }
            };


            var ruleDescriptionBuilder = new RuleDescriptionBuilder(mockValidatorErrorMessageBuilder.Object);

            var actualRuleDescription = ruleDescriptionBuilder.BuildRuleDescription(propertyRule.Validators, propertyName, CascadeMode.Continue, propertyRule);

            actualRuleDescription.Rules.Should().HaveCount(3);
            actualRuleDescription.ShouldBeEquivalentTo(expectedOutput, options => options.WithStrictOrdering());
        }
Пример #3
0
        public void ValiDoc_WithNoChildValidatorAndDeepDocument_ReturnsRulesForAll()
        {
            var validator = new MultipleRuleValidator();

            var ruleGenerator = new DocBuilder(new RuleDescriptionBuilder(new ValidatorErrorMessageBuilder(new FluentValidationHelpers())));

            var validationRules = ruleGenerator.Document(validator).ToList();

            validationRules.Should().HaveCount(3);

            var expectedOutput = new List <RuleDescription>
            {
                new RuleDescription
                {
                    FailureSeverity   = "Error",
                    OnFailure         = "Continue",
                    ValidatorName     = "NotNullValidator",
                    ValidationMessage = "'First Name' must not be empty."
                },
                new RuleDescription
                {
                    FailureSeverity   = "Error",
                    OnFailure         = "Continue",
                    ValidatorName     = "NotEmptyValidator",
                    ValidationMessage = "'Last Name' should not be empty."
                },
                new RuleDescription
                {
                    FailureSeverity   = "Error",
                    OnFailure         = "Continue",
                    ValidatorName     = "MaximumLengthValidator",
                    ValidationMessage = "'Last Name' must be between {MinLength} and {MaxLength} characters. You entered {TotalLength} characters."
                }
            };

            validationRules.ShouldBeEquivalentTo(expectedOutput, options => options.WithStrictOrdering());
        }