public void ValidatorShouldThrowExceptionIfMetadataIsInvalid() { DataAnnotationValidatior.GetValidationElementsDelegate = null; var validationClass = new InvalidaMetadataClass(); ShouldThrow <MissingMemberException>(() => DataAnnotationValidatior.GetValidationElements(validationClass)); }
IEnumerable<object> DataAnnotationValidatior.IValidationElement.Validate( DataAnnotationValidatior.ValidationContext validationContext) { if (Validate == null) return Enumerable.Empty<object>(); return Validate(validationContext); }
protected virtual Func <string> GetDisplayNameInternal(MemberInfo memberInfo) { #if NET_STANDARD var typeInfo = memberInfo as TypeInfo; #else var typeInfo = memberInfo as Type; #endif if (typeInfo != null) { #if NET_STANDARD var type = typeInfo.AsType(); #else var type = typeInfo; #endif var metadataTypes = new List <Type>(DataAnnotationValidatior.GetMetadataTypes(type)); metadataTypes.Insert(0, type); for (int index = 0; index < metadataTypes.Count; index++) { #if NET_STANDARD var result = TryGetDisplayNameAttributeAccessor(metadataTypes[index].GetTypeInfo()); #else var result = TryGetDisplayNameAttributeAccessor(metadataTypes[index]); #endif if (result != null) { return(result); } } return(() => string.Empty); } Func <string> accessor = TryGetDisplayAttributeAccessor(memberInfo); if (accessor != null) { return(accessor); } var types = DataAnnotationValidatior.GetMetadataTypes(memberInfo.DeclaringType); for (int index = 0; index < types.Length; index++) { MemberInfo metaMemberInfo = TryFindMetaMemberInfo(types[index], memberInfo); if (metaMemberInfo == null) { continue; } accessor = TryGetDisplayAttributeAccessor(metaMemberInfo); if (accessor != null) { return(accessor); } } string s = memberInfo.Name; return(() => s); }
public void ValidatorShouldFindAllElements() { const int count = 2; const int objectCount = 1; DataAnnotationValidatior.GetValidationElementsDelegate = null; var validationClass = new SpyValidationClass(); var elements = DataAnnotationValidatior.GetValidationElements(validationClass); elements.Count.ShouldEqual(count); elements[string.Empty].Count.ShouldEqual(objectCount); elements[SpyPropertyName].Count.ShouldEqual(1); }
public void ProviderShouldValidateUsingDataAnnotationAttributesWithToolkitMetadata() { var result = new ValidationResult("error", new[] { DisplayName }); var dictionary = new Dictionary <object, object>(); var propertyInfo = typeof(MetadataValidationClassToolkit).GetPropertyEx(SpyPropertyName); DisplayNameProvider.GetNameDelegate = info => { info.ShouldEqual(propertyInfo); return(DisplayName + propertyInfo.Name); }; DataAnnotationValidatior.GetValidationElementsDelegate = null; DataAnnotationValidatior.ElementsCache.Clear(); DataAnnotationValidatior.DisplayNameProvider = null; var validationClass = new MetadataValidationClassToolkit { 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 ValidatorShouldValidateItemUsingSystemValidatableObject() { var result = new ValidationResult("error", new[] { DisplayName }); var dictionary = new Dictionary <object, object>(); DisplayNameProvider.GetNameDelegate = info => { #if NETFX_CORE info.ShouldEqual(typeof(SpyValidationClass).GetTypeInfo()); #else info.ShouldEqual(typeof(SpyValidationClass)); #endif return(DisplayName); }; DataAnnotationValidatior.GetValidationElementsDelegate = null; DataAnnotationValidatior.ElementsCache.Clear(); DataAnnotationValidatior.DisplayNameProvider = null; var validationClass = new SpyValidationClass { ValidateSystem = context => { context.DisplayName.ShouldEqual(DisplayName); context.Items[DataAnnotationValidatior.ServiceProviderKey].ShouldEqual(IocContainer); context.MemberName.ShouldBeNull(); return(new[] { result }); } }; var validationContext = new DataAnnotationValidatior.ValidationContext(validationClass, IocContainer, dictionary); var elements = DataAnnotationValidatior.GetValidationElements(validationClass); var validationResults = new List <object>(); elements[string.Empty].ForEach(element => validationResults.AddRange(element.Validate(validationContext))); var validationResult = validationResults.OfType <ValidationResult>().Single(); validationResult.MemberNames.SequenceEqual(result.MemberNames).ShouldBeTrue(); validationResult.ErrorMessage.ShouldEqual(result.ErrorMessage); }