Esempio n. 1
0
        public void DocBuilder_WithValidator_ReturnsRuleDescription()
        {
            var singleRuleValidator = new SingleRuleValidator();

            var expectedRuleDescription = new RuleDescriptor
            {
                MemberName = "First Name",
                Rules      = new List <RuleDescription>
                {
                    new RuleDescription
                    {
                        FailureSeverity   = "Error",
                        OnFailure         = "Continue",
                        ValidationMessage = "Mock message",
                        ValidatorName     = "NotEmptyValidator"
                    }
                }
            };

            var mockRuleDescriptor = new Mock <IRuleBuilder>();

            mockRuleDescriptor.Setup(x => x.BuildRuleDescription(It.IsAny <IEnumerable <IPropertyValidator> >(), It.IsAny <string>(),
                                                                 It.IsAny <CascadeMode>(), It.IsAny <PropertyRule>())).Returns(expectedRuleDescription);

            var docBuilder = new DocBuilder(mockRuleDescriptor.Object);

            var actualResult = docBuilder.Document(singleRuleValidator).ToList();

            actualResult.Should().HaveCount(1);
            actualResult.Should().BeEquivalentTo(expectedRuleDescription);
        }
Esempio n. 2
0
        public void ValiDoc_WithSingleRuleValidator_OutputSingleRule()
        {
            var validator = new SingleRuleValidator();

            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     = "NotEmptyValidator",
                            ValidationMessage = "'First Name' should not be empty."
                        }
                    }
                }
            };

            validationRules.Should().HaveCount(1);
            validationRules.ShouldBeEquivalentTo(expectedOutput, options => options.WithStrictOrdering());
        }
Esempio n. 3
0
        public void DocBuilder_WithNoRuleValidator_ReturnEmptyOutput()
        {
            var docBuilder = new DocBuilder(Mock.Of <IRuleBuilder>());

            var actualOutput = docBuilder.Document(new NoRulesValidator());

            actualOutput.Should().BeEquivalentTo(Enumerable.Empty <RuleDescription>());
        }
Esempio n. 4
0
        public void DocBuilder_WithNullValidator_ThrowsArgumentNullException()
        {
            var docBuilder = new DocBuilder(Mock.Of <IRuleBuilder>());

            var thrownException = Record.Exception(() => docBuilder.Document <AbstractValidator <Address> >(null).ToList()); //.ToList() to materialise exception

            thrownException.Should().BeOfType <ArgumentNullException>().Which.ParamName.Should().Be("validator");
        }
        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());
        }
Esempio n. 6
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());
        }
Esempio n. 7
0
        public void ValiDoc_WithMultipleChildValidatorsAndDeepDocument_ReturnsRulesForAllChildValidators()
        {
            var validator = new MultipleRuleMultipleChildValidator();

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

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

            validationRules.Should().HaveCount(11);

            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
                },
                new RuleDescription
                {
                    FailureSeverity   = "Error",
                    OnFailure         = "Continue",
                    ValidatorName     = "NotEqualValidator",
                    ValidationMessage = "'Employment Status' should not be equal to '{ComparisonValue}'."
                },
                new RuleDescription
                {
                    FailureSeverity   = "Error",
                    OnFailure         = "Continue",
                    ValidatorName     = "EnumValidator",
                    ValidationMessage = "'Employment Status' has a range of values which does not include 'NotSet'."
                },
                new RuleDescription
                {
                    FailureSeverity   = "Error",
                    OnFailure         = "Continue",
                    ValidatorName     = "NotEmptyValidator",
                    ValidationMessage = "'Job Title' should not be empty."
                },
                new RuleDescription
                {
                    FailureSeverity   = "Error",
                    OnFailure         = "Continue",
                    ValidatorName     = "OccupationDetailsValidator",
                    ValidationMessage = null
                }
            };

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