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 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()); }
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()); }