public void ValidatorShouldValidateUsingDataAnnotationAttributesWithSystemMetadata() { var result = new ValidationResult("error", new[] { DisplayName }); var dictionary = new Dictionary <object, object>(); var propertyInfo = typeof(MetadataValidationClassSystem).GetPropertyEx(SpyPropertyName); DisplayNameProvider.GetNameDelegate = info => { info.ShouldEqual(propertyInfo); return(DisplayName + propertyInfo.Name); }; DataAnnotationValidatior.GetValidationElementsDelegate = null; DataAnnotationValidatior.ElementsCache.Clear(); DataAnnotationValidatior.DisplayNameProvider = null; var validationClass = new MetadataValidationClassSystem { SpyProperty = "Test" }; var validationContext = new DataAnnotationValidatior.ValidationContext(validationClass, IocContainer, dictionary); SpyValidationAttribute.IsValidDelegate = (o, context) => { o.ShouldEqual(validationClass.SpyProperty); context.DisplayName.ShouldEqual(DisplayName + propertyInfo.Name); context.Items[DataAnnotationValidatior.ServiceProviderKey].ShouldEqual(IocContainer); context.MemberName.ShouldEqual(SpyPropertyName); return(result); }; var validationElements = DataAnnotationValidatior.GetValidationElements(validationClass)[SpyPropertyName]; validationElements.Count.ShouldEqual(2); var validationResults = validationElements .SelectMany(element => element.Validate(validationContext)) .ToArray(); validationResults.Length.ShouldEqual(1); var validationResult = validationResults.OfType <ValidationResult>().Single(); validationResult.MemberNames.SequenceEqual(result.MemberNames).ShouldBeTrue(); validationResult.ErrorMessage.ShouldEqual(result.ErrorMessage); }
public void ValidatorShouldValidateUsingDataAnnotationAttributesWithSystemMetadata() { var result = new ValidationResult("error", new[] { DisplayName }); var dictionary = new Dictionary<object, object>(); var propertyInfo = typeof(MetadataValidationClassSystem).GetProperty(SpyPropertyName); DisplayNameProvider.GetNameDelegate = info => { info.ShouldEqual(propertyInfo); return DisplayName + propertyInfo.Name; }; DataAnnotationValidatior.GetValidationElementsDelegate = null; DataAnnotationValidatior.ElementsCache.Clear(); DataAnnotationValidatior.DisplayNameProvider = null; var validationClass = new MetadataValidationClassSystem { SpyProperty = "Test" }; var validationContext = new DataAnnotationValidatior.ValidationContext(validationClass, IocContainer, dictionary); SpyValidationAttribute.IsValidDelegate = (o, context) => { o.ShouldEqual(validationClass.SpyProperty); context.DisplayName.ShouldEqual(DisplayName + propertyInfo.Name); context.Items[DataAnnotationValidatior.ServiceProviderKey].ShouldEqual(IocContainer); context.MemberName.ShouldEqual(SpyPropertyName); return result; }; var validationElements = DataAnnotationValidatior.GetValidationElements(validationClass)[SpyPropertyName]; validationElements.Count.ShouldEqual(2); var validationResults = validationElements .SelectMany(element => element.Validate(validationContext)) .ToArray(); validationResults.Length.ShouldEqual(1); var validationResult = validationResults.OfType<ValidationResult>().Single(); validationResult.MemberNames.SequenceEqual(result.MemberNames).ShouldBeTrue(); validationResult.ErrorMessage.ShouldEqual(result.ErrorMessage); }