public void ResolvePropertyName_ChildProperty_ReturnsExpectedPropertyName() { Expression <Func <PatchDTO, string> > memberAccessor = patchDto => patchDto.Data[0].Id; var resolvedPropertyName = ValidatorOptions.PropertyNameResolver(typeof(PatchDTO), memberAccessor.GetMember(), memberAccessor); Assert.That(resolvedPropertyName, Is.EqualTo("Id")); //Assert.That(resolvedPropertyName, Is.EqualTo("Data[0].Id")); }
/// <summary> /// Creates a new property rule. /// </summary> /// <param name="member">Property</param> /// <param name="propertyFunc">Function to get the property value</param> /// <param name="expression">Lambda expression used to create the rule</param> /// <param name="cascadeModeThunk">Function to get the cascade mode.</param> /// <param name="typeToValidate">Type to validate</param> /// <param name="containerType">Container type that owns the property</param> public PropertyRule(MemberInfo member, PropertySelector propertyFunc, Expression expression, Func <CascadeMode> cascadeModeThunk, Type typeToValidate, Type containerType) { Member = member; PropertyFunc = propertyFunc; Expression = expression; OnFailure = x => { }; TypeToValidate = typeToValidate; this.cascadeModeThunk = cascadeModeThunk; PropertyName = ValidatorOptions.PropertyNameResolver(containerType, member); }
/// <summary> /// Creates a new property rule. /// </summary> /// <param name="member">Property</param> /// <param name="propertyFunc">Function to get the property value</param> /// <param name="expression">Lambda expression used to create the rule</param> /// <param name="cascadeModeThunk">Function to get the cascade mode.</param> /// <param name="typeToValidate">Type to validate</param> /// <param name="containerType">Container type that owns the property</param> public PropertyRule(MemberInfo member, Func <object, object> propertyFunc, LambdaExpression expression, Func <CascadeMode> cascadeModeThunk, Type typeToValidate, Type containerType) { Member = member; PropertyFunc = propertyFunc; Expression = expression; OnFailure = x => { }; TypeToValidate = typeToValidate; this.cascadeModeThunk = cascadeModeThunk; PropertyName = ValidatorOptions.PropertyNameResolver(containerType, member, expression); DisplayName = new LazyStringSource(() => ValidatorOptions.DisplayNameResolver(containerType, member, expression)); }
/// <summary> /// Creates a new property rule. /// </summary> /// <param name="member">Property</param> /// <param name="propertyFunc">Function to get the property value</param> /// <param name="expression">Lambda expression used to create the rule</param> /// <param name="cascadeModeThunk">Function to get the cascade mode.</param> /// <param name="typeToValidate">Type to validate</param> /// <param name="containerType">Container type that owns the property</param> public PropertyRule(MemberInfo member, Func <object, object> propertyFunc, LambdaExpression expression, Func <CascadeMode> cascadeModeThunk, Type typeToValidate, Type containerType, Func <PropertyRule, string> _LoadDisplayName) { Member = member; PropertyFunc = propertyFunc; // Expression = expression; OnFailure = x => { }; TypeToValidate = typeToValidate; this.cascadeModeThunk = cascadeModeThunk; DependentRules = new List <IValidationRule>(); PropertyName = ValidatorOptions.PropertyNameResolver(containerType, member, expression); LoadDisplayName = _LoadDisplayName; }
private string GetPropertyName(IEnumerable <MemberInfo> properties) { var propertiesList = properties.Where(x => x != null).Select(x => x.Name).ToList(); if (MemberAccessor != null) { string memberName = ValidatorOptions.PropertyNameResolver(typeof(T), MemberAccessor.Member, MemberAccessor); if (!string.IsNullOrEmpty(memberName)) { propertiesList.Insert(0, memberName); } } return(string.Join(".", propertiesList)); }
/// <summary> /// Creates a new property rule. /// </summary> /// <param name="member">Property</param> /// <param name="propertyFunc">Function to get the property value</param> /// <param name="expression">Lambda expression used to create the rule</param> /// <param name="cascadeModeThunk">Function to get the cascade mode.</param> /// <param name="typeToValidate">Type to validate</param> /// <param name="containerType">Container type that owns the property</param> public PropertyRule(MemberInfo member, Func <object, object> propertyFunc, LambdaExpression expression, Func <CascadeMode> cascadeModeThunk, Type typeToValidate, Type containerType) { Member = member; PropertyFunc = propertyFunc; Expression = expression; OnFailure = x => { }; TypeToValidate = typeToValidate; this.cascadeModeThunk = cascadeModeThunk; PropertyName = ValidatorOptions.PropertyNameResolver(containerType, member, expression); string displayName = ValidatorOptions.DisplayNameResolver(containerType, member, expression); if (!string.IsNullOrEmpty(displayName)) { DisplayName = new StaticStringSource(displayName); } }
private IEnumerable <string> GetMemberNames() { if (_testValidationResult.MemberAccessor == null) { yield break; } string memberName = ValidatorOptions.PropertyNameResolver( typeof(T), _testValidationResult.MemberAccessor.Member, _testValidationResult.MemberAccessor ); if (!string.IsNullOrEmpty(memberName)) { yield return(memberName); } }
public void ShouldNotHaveValidationErrorFor <TProperty>(Expression <Func <T, TProperty> > memberAccessor) { string propertyName = ValidatorOptions.PropertyNameResolver(typeof(T), memberAccessor.GetMember(), memberAccessor); ValidationTestExtension.ShouldNotHaveValidationError(Errors, propertyName, true); }
public IEnumerable <ValidationFailure> ShouldHaveValidationErrorFor <TProperty>(Expression <Func <T, TProperty> > memberAccessor) { string propertyName = ValidatorOptions.PropertyNameResolver(typeof(T), memberAccessor.GetMember(), memberAccessor); return(ValidationTestExtension.ShouldHaveValidationError(Errors, propertyName, true)); }