Exemple #1
0
 public void Initialization()
 {
     Assert.That(_propertyRule.DisplayName, Is.TypeOf(typeof(LazyStringSource)));
     Assert.That(_propertyRule.DisplayName.GetString(), Is.Null);
     Assert.That(_propertyRule.PropertyName, Is.EqualTo("LastName"));
     Assert.That(_propertyRule.GetDisplayName(), Is.EqualTo("Last Name"));
 }
        public void PropertyDescription_should_return_property_name_split()
        {
            var          builder = _validator.RuleFor(x => x.DateOfBirth);
            PropertyRule rule    = null;

            builder.Configure(r => rule = r);
            rule.GetDisplayName(null).ShouldEqual("Date Of Birth");
        }
Exemple #3
0
 /// <summary>
 /// Get the formatted error message of the validator.
 /// </summary>
 /// <returns>A formatted error message string.</returns>
 protected virtual Func<string, string> FormatMessage(PropertyRule rule, IPropertyValidator validator)
 {
     return displayName =>
     {
         return new MessageFormatter()
             .AppendPropertyName(displayName ?? rule.GetDisplayName())
             .BuildMessage(validator.ErrorMessageSource.GetString());
     };
 }
 /// <summary>
 /// Get the formatted error message of the validator.
 /// </summary>
 /// <returns>A formatted error message string.</returns>
 protected virtual Func <string, string> FormatMessage(PropertyRule rule, IPropertyValidator validator)
 {
     return(displayName =>
     {
         return new MessageFormatter()
         .AppendPropertyName(displayName ?? rule.GetDisplayName())
         .BuildMessage(validator.ErrorMessageSource.GetString(null));
     });
 }
        public void Rule_for_a_non_memberexpression_should_not_generate_property_name()
        {
            var          builder = _validator.RuleFor(x => x.CalculateSalary());
            PropertyRule rule    = null;

            builder.Configure(r => rule = r);
            rule.GetDisplayName(null).ShouldBeNull();
            rule.PropertyName.ShouldBeNull();
        }
        public void PropertyDescription_should_return_custom_property_name()
        {
            var          builder = _validator.RuleFor(x => x.DateOfBirth);
            PropertyRule rule    = null;

            builder.Configure(r => rule = r);
            builder.NotEqual(default(DateTime)).WithName("Foo");
            rule.GetDisplayName(null).ShouldEqual("Foo");
        }
        /// <summary>
        /// Inspect the validator type and add the rules/messages with the correct properties.
        /// </summary>
        /// <param name="rule">FluentValidation Property Rule.</param>
        /// <param name="validator">Validator to inspect.</param>
        /// <param name="propertyName">Name of the property to check.</param>
        internal override void AddRuleBasedOnValidatorType(PropertyRule rule, IPropertyValidator validator, string propertyName)
        {
            var displayName          = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(rule.GetDisplayName());
            var errorMessageTemplate = validator.Options.ErrorMessageSource.GetString(null);

            // This is the open extension point for OCP (Open Closed Principle)
            switch (validator)
            {
            case NotNullValidator _:
            case NotEmptyValidator _:
                this.AddRule(propertyName, displayName, errorMessageTemplate, "required", true);
                break;

            case AspNetCoreCompatibleEmailValidator _:
                this.AddRule(propertyName, displayName, errorMessageTemplate, "regex", AspNetCoreCompatibleEmailAddressRegex);
                break;

            case EmailValidator _:
                this.AddRule(propertyName, displayName, errorMessageTemplate, "regex", Net4xEmailAddressRegex);
                break;

            case RegularExpressionValidator expressionValidator:
                this.AddRule(propertyName, displayName, errorMessageTemplate, "regex", expressionValidator.Expression);
                break;

            case EqualValidator equalValidator:
                var comparisonValue = equalValidator.MemberToCompare?.Name ?? equalValidator.ValueToCompare;
                this.AddRule(propertyName, displayName, errorMessageTemplate, "compare", comparisonValue, ("ComparisonValue", comparisonValue));
                break;

            case LessThanValidator lessThanValidator:
                this.AddRule(propertyName, displayName, errorMessageTemplate, "lessThan", lessThanValidator.ValueToCompare, ("ComparisonValue", lessThanValidator.ValueToCompare));
                break;

            case LessThanOrEqualValidator lessThanOrEqualValidator:
                this.AddRule(propertyName, displayName, errorMessageTemplate, "lessThanOrEqualTo", lessThanOrEqualValidator.ValueToCompare, ("ComparisonValue", lessThanOrEqualValidator.ValueToCompare));
                break;

            case GreaterThanValidator greaterThanValidator:
                this.AddRule(propertyName, displayName, errorMessageTemplate, "greaterThan", greaterThanValidator.ValueToCompare, ("ComparisonValue", greaterThanValidator.ValueToCompare));
                break;

            case GreaterThanOrEqualValidator greaterThanOrEqualValidator:
                this.AddRule(propertyName, displayName, errorMessageTemplate, "greaterThanOrEqualTo", greaterThanOrEqualValidator.ValueToCompare, ("ComparisonValue", greaterThanOrEqualValidator.ValueToCompare));
                break;

            case InclusiveBetweenValidator inclusiveBetweenValidator:
                this.AddRule(propertyName, displayName, errorMessageTemplate, "range", new FromToValues(inclusiveBetweenValidator.From, inclusiveBetweenValidator.To), ("From", inclusiveBetweenValidator.From), ("To", inclusiveBetweenValidator.To));
                break;

            case ExclusiveBetweenValidator exclusiveBetweenValidator:
                this.AddRule(propertyName, displayName, errorMessageTemplate, "exclusiveRange", new FromToValues(exclusiveBetweenValidator.From, exclusiveBetweenValidator.To), ("From", exclusiveBetweenValidator.From), ("To", exclusiveBetweenValidator.To));
                break;

            case ExactLengthValidator exactLengthValidator:
                this.AddRule(propertyName, displayName, errorMessageTemplate, "exactLength", exactLengthValidator.Max, ("MaxLength", exactLengthValidator.Max));
                break;

            case MinimumLengthValidator minimumLengthValidator:
                this.AddRule(propertyName, displayName, errorMessageTemplate, "minLength", minimumLengthValidator.Min, ("MinLength", minimumLengthValidator.Min));
                break;

            case MaximumLengthValidator maximumLengthValidator:
                this.AddRule(propertyName, displayName, errorMessageTemplate, "maxLength", maximumLengthValidator.Max, ("MaxLength", maximumLengthValidator.Max));
                break;

            case LengthValidator lengthValidator:
                this.AddRule(propertyName, displayName, errorMessageTemplate, "length", new MinMaxValues(lengthValidator.Min, lengthValidator.Max), ("MinLength", lengthValidator.Min), ("MaxLength", lengthValidator.Max));
                break;

            default:
                this.AddRule(propertyName, displayName, errorMessageTemplate, "remote", rule.PropertyName);
                break;
            }
        }