public void GetValueAccessBuilderForMethodWithParametersThrows() { MethodInfo methodInfo = typeof(MemberAccessValidatorBuilderFactoryTestClass).GetMethod("MethodWithParameters"); ValueAccessValidatorBuilder builder = new MemberAccessValidatorBuilderFactory().GetMethodValueAccessValidatorBuilder(methodInfo, new MockValidatedElement(false, null, null, CompositionType.And, null, null)); }
/// <summary> /// Crée un SelfValidator si la classe à valider possède des metadatas. /// </summary> /// <param name="targetType">Le type cible.</param> /// <param name="ruleset">Le jeu de règles.</param> /// <param name="mainValidatorFactory">La brique à utiliser lors de la construction des validateurs imbriqués..</param> /// <returns>Le validateur créé.</returns> private Validator CreateSelfValidator(Type targetType, string ruleset, ValidatorFactory mainValidatorFactory) { var validators = new List <Validator>(); // Si la classe utilise la validation par metadata, forcer quand même la SelfValidation à avoir lieu var selfValidationMethod = targetType.GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance) .FirstOrDefault(m => ValidationReflectionHelper.GetCustomAttributes(m, typeof(SelfValidationAttribute), false).Any()); if (selfValidationMethod != null) { validators.Add(new SelfValidationValidator(selfValidationMethod)); } // Parcourir toutes les propriétés qui possèdent de la validation classe VAB en plus de la validation METADATA // Pour chacun des ValueValidatorAttribute (ou dérivé) trouvé, ajouter un validateur foreach (var prop in targetType.GetProperties(BindingFlags.Public | BindingFlags.Instance)) { var validatedElement = (IValidatedElement) new ValidationAttributeValidatedElement(prop); var builder = new MemberAccessValidatorBuilderFactory().GetPropertyValueAccessValidatorBuilder(prop, validatedElement); foreach (IValidatorDescriptor att in prop.GetCustomAttributes(typeof(ValueValidatorAttribute), false)) { validators.Add(CreateValidatorForValidatedElement(att, validatedElement, builder, mainValidatorFactory)); } } return(new AndCompositeValidator(validators.ToArray())); }
public void CanGetValueAccessBuilderForZeroParametersNotVoidMethod() { MethodInfo methodInfo = typeof(MemberAccessValidatorBuilderFactoryTestClass).GetMethod("Method"); ValueAccessValidatorBuilder builder = new MemberAccessValidatorBuilderFactory().GetMethodValueAccessValidatorBuilder(methodInfo, new MockValidatedElement(true, null, null, CompositionType.Or, null, null)); Assert.IsNotNull(builder); Assert.AreEqual(true, builder.IgnoreNulls); Assert.AreEqual(CompositionType.Or, builder.CompositionType); Assert.AreSame(typeof(MethodValueAccess), builder.ValueAccess.GetType()); Assert.AreSame(methodInfo, ((MethodValueAccess)builder.ValueAccess).MethodInfo); }
public void CanGetValueAccessBuilderForField() { FieldInfo fieldInfo = typeof(MemberAccessValidatorBuilderFactoryTestClass).GetField("Field"); ValueAccessValidatorBuilder builder = new MemberAccessValidatorBuilderFactory().GetFieldValueAccessValidatorBuilder(fieldInfo, new MockValidatedElement(true, null, null, CompositionType.Or, null, null)); Assert.IsNotNull(builder); Assert.AreEqual(true, builder.IgnoreNulls); Assert.AreEqual(CompositionType.Or, builder.CompositionType); Assert.AreSame(typeof(FieldValueAccess), builder.ValueAccess.GetType()); Assert.AreSame(fieldInfo, ((FieldValueAccess)builder.ValueAccess).FieldInfo); }
public void CanGetValueAccessBuilderForProperty() { PropertyInfo propertyInfo = typeof(MemberAccessValidatorBuilderFactoryTestClass).GetProperty("Property"); ValueAccessValidatorBuilder builder = new MemberAccessValidatorBuilderFactory().GetPropertyValueAccessValidatorBuilder(propertyInfo, new MockValidatedElement(true, null, null, CompositionType.Or, null, null)); Assert.IsNotNull(builder); Assert.AreEqual(true, builder.IgnoreNulls); Assert.AreEqual(CompositionType.Or, builder.CompositionType); Assert.AreSame(typeof(PropertyValueAccess), builder.ValueAccess.GetType()); Assert.AreSame(propertyInfo, ((PropertyValueAccess)builder.ValueAccess).PropertyInfo); }
public void CanGetValueAccessBuilderForField() { FieldInfo fieldInfo = typeof(MemberAccessValidatorBuilderFactoryTestClass).GetField("Field"); ValueAccessValidatorBuilder builder = new MemberAccessValidatorBuilderFactory().GetFieldValueAccessValidatorBuilder(fieldInfo, new MockValidatedElement(true, null, null, CompositionType.Or, null, null)); Assert.IsNotNull(builder); Assert.AreEqual(true, builder.IgnoreNulls); Assert.AreEqual(CompositionType.Or, builder.CompositionType); Assert.AreSame(typeof(FieldValueAccess), builder.ValueAccess.GetType()); Assert.AreSame(fieldInfo, ((FieldValueAccess)builder.ValueAccess).FieldInfo); }
public void CanGetValueAccessBuilderForProperty() { PropertyInfo propertyInfo = typeof(MemberAccessValidatorBuilderFactoryTestClass).GetProperty("Property"); ValueAccessValidatorBuilder builder = new MemberAccessValidatorBuilderFactory().GetPropertyValueAccessValidatorBuilder(propertyInfo, new MockValidatedElement(true, null, null, CompositionType.Or, null, null)); Assert.IsNotNull(builder); Assert.AreEqual(true, builder.IgnoreNulls); Assert.AreEqual(CompositionType.Or, builder.CompositionType); Assert.AreSame(typeof(PropertyValueAccess), builder.ValueAccess.GetType()); Assert.AreSame(propertyInfo, ((PropertyValueAccess)builder.ValueAccess).PropertyInfo); }
public void GetValueAccessBuilderForNullMethodThrows() { ValueAccessValidatorBuilder builder = new MemberAccessValidatorBuilderFactory().GetMethodValueAccessValidatorBuilder(null, new MockValidatedElement(false, null, null, CompositionType.And, null, null)); }
public void GetValueAccessBuilderForMethodWithParametersThrows() { MethodInfo methodInfo = typeof(MemberAccessValidatorBuilderFactoryTestClass).GetMethod("MethodWithParameters"); ValueAccessValidatorBuilder builder = new MemberAccessValidatorBuilderFactory().GetMethodValueAccessValidatorBuilder(methodInfo, new MockValidatedElement(false, null, null, CompositionType.And, null, null)); }
public void GetValueAccessBuilderForNullMethodThrows() { ValueAccessValidatorBuilder builder = new MemberAccessValidatorBuilderFactory().GetMethodValueAccessValidatorBuilder(null, new MockValidatedElement(false, null, null, CompositionType.And, null, null)); }
public void CanGetValueAccessBuilderForZeroParametersNotVoidMethod() { MethodInfo methodInfo = typeof(MemberAccessValidatorBuilderFactoryTestClass).GetMethod("Method"); ValueAccessValidatorBuilder builder = new MemberAccessValidatorBuilderFactory().GetMethodValueAccessValidatorBuilder(methodInfo, new MockValidatedElement(true, null, null, CompositionType.Or, null, null)); Assert.IsNotNull(builder); Assert.AreEqual(true, builder.IgnoreNulls); Assert.AreEqual(CompositionType.Or, builder.CompositionType); Assert.AreSame(typeof(MethodValueAccess), builder.ValueAccess.GetType()); Assert.AreSame(methodInfo, ((MethodValueAccess)builder.ValueAccess).MethodInfo); }