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); }
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()); }
public void DocBuilder_WithNoRuleValidator_ReturnEmptyOutput() { var docBuilder = new DocBuilder(Mock.Of <IRuleBuilder>()); var actualOutput = docBuilder.Document(new NoRulesValidator()); actualOutput.Should().BeEquivalentTo(Enumerable.Empty <RuleDescription>()); }
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()); }
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()); }
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()); }