Exemplo n.º 1
0
        public void ValiDoc_WithMultipleRuleSingleChildAndDeepDocument_ReturnsRulesForAllIncludingChildValidator()
        {
            var validator = new MultipleRuleSingleChildValidator();

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

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

            validationRules.Should().HaveCount(7);

            var expectedOutput = new List <RuleDescription>
            {
                new RuleDescription
                {
                    FailureSeverity   = "Error",
                    OnFailure         = "Continue",
                    ValidatorName     = "NotEmptyValidator",
                    ValidationMessage = "'First Name' should 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."
                },
                new RuleDescription
                {
                    FailureSeverity   = "Error",
                    OnFailure         = "Continue",
                    ValidatorName     = "NotEmptyValidator",
                    ValidationMessage = "'House Number' should not be empty."
                },
                new RuleDescription
                {
                    FailureSeverity   = "Error",
                    OnFailure         = "Continue",
                    ValidatorName     = "NotEmptyValidator",
                    ValidationMessage = "'Street Name' should not be empty."
                },
                new RuleDescription
                {
                    FailureSeverity   = "Error",
                    OnFailure         = "Continue",
                    ValidatorName     = "NotEmptyValidator",
                    ValidationMessage = "'Post Code' should not be empty."
                },
                new RuleDescription
                {
                    FailureSeverity   = "Error",
                    OnFailure         = "Continue",
                    ValidatorName     = "AddressValidator",
                    ValidationMessage = null
                }
            };

            validationRules.ShouldBeEquivalentTo(expectedOutput, options => options.WithStrictOrdering());
        }
        public void ValiDoc_WithMultipleRuleSingleChildValidator_OutputMultipleRulesAndSingleChild()
        {
            var validator      = new MultipleRuleSingleChildValidator();
            var expectedOutput = new List <RuleDescriptor>
            {
                new RuleDescriptor
                {
                    MemberName = "First Name",
                    Rules      = new List <RuleDescription>
                    {
                        new RuleDescription
                        {
                            FailureSeverity   = "Error",
                            OnFailure         = "Continue",
                            ValidatorName     = "NotEmptyValidator",
                            ValidationMessage = "'First Name' should 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     = "MaximumLengthValidator",
                            ValidationMessage = "'Last Name' must be less than {MaxLength} characters. You entered {TotalLength} characters."
                        }
                    }
                },
                new RuleDescriptor
                {
                    MemberName = "Address",
                    Rules      = new List <RuleDescription>
                    {
                        new RuleDescription
                        {
                            FailureSeverity   = "Error",
                            OnFailure         = "Continue",
                            ValidatorName     = "AddressValidator",
                            ValidationMessage = "N/A - Refer to specific AddressValidator documentation"
                        }
                    }
                }
            };

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

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

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