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