public void ProviderShouldValidateUsingDataAnnotationAttributes()
        {
            var result       = new ValidationResult("error", new[] { DisplayName });
            var dictionary   = new Dictionary <object, object>();
            var propertyInfo = typeof(SpyValidationClass).GetProperty(SpyPropertyName);

            DisplayNameProvider.GetNameDelegate = info =>
            {
                info.ShouldEqual(propertyInfo);
                return(DisplayName + propertyInfo.Name);
            };
            var provider        = new DynamicDataAnnotationsElementProvider(DisplayNameProvider);
            var validationClass = new SpyValidationClass {
                SpyProperty = "Test"
            };
            var validationContext = new MugenMvvmToolkit.Models.Validation.ValidationContext(validationClass, IocContainer, dictionary);

            SpyValidationAttribute.IsValidDelegate = (o, context) =>
            {
                o.ShouldEqual(validationClass.SpyProperty);
                context.DisplayName.ShouldEqual(DisplayName + propertyInfo.Name);
                context.Items[DynamicDataAnnotationsElementProvider.ServiceProviderKey].ShouldEqual(IocContainer);
                context.MemberName.ShouldEqual(SpyPropertyName);
                return(result);
            };
            var validationResult = provider.GetValidationElements(validationClass)[SpyPropertyName]
                                   .Single()
                                   .Validate(validationContext)
                                   .Single();

            validationResult.MemberNames.SequenceEqual(result.MemberNames).ShouldBeTrue();
            validationResult.ErrorMessage.ShouldEqual(result.ErrorMessage);
        }
        public void ProviderShouldValidateItemUsingSystemValidatableObject()
        {
            var result     = new ValidationResult("error", new[] { DisplayName });
            var dictionary = new Dictionary <object, object>();

            DisplayNameProvider.GetNameDelegate = info =>
            {
                info.ShouldEqual(typeof(SpyValidationClass));
                return(DisplayName);
            };
            var provider        = new DynamicDataAnnotationsElementProvider(DisplayNameProvider);
            var validationClass = new SpyValidationClass
            {
                ValidateSystem = context =>
                {
                    context.DisplayName.ShouldEqual(DisplayName);
                    context.Items[DynamicDataAnnotationsElementProvider.ServiceProviderKey].ShouldEqual(IocContainer);
                    context.MemberName.ShouldBeNull();
                    return(new[] { result });
                },
                Validate = context => Enumerable.Empty <IValidationResult>()
            };

            var validationContext = new MugenMvvmToolkit.Models.Validation.ValidationContext(validationClass, IocContainer, dictionary);
            var elements          = provider.GetValidationElements(validationClass);
            var validationResults = new List <IValidationResult>();

            elements[string.Empty].ForEach(element => validationResults.AddRange(element.Validate(validationContext)));

            var validationResult = validationResults.Single();

            validationResult.MemberNames.SequenceEqual(result.MemberNames).ShouldBeTrue();
            validationResult.ErrorMessage.ShouldEqual(result.ErrorMessage);
        }
コード例 #3
0
        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 ProviderShouldFindAllElements()
        {
#if WPF
            const int count       = 2;
            const int objectCount = 2;
#else
            const int count       = 2;
            const int objectCount = 1;
#endif
            var provider        = new DynamicDataAnnotationsElementProvider(DisplayNameProvider);
            var validationClass = new SpyValidationClass();
            var elements        = provider.GetValidationElements(validationClass);
            elements.Count.ShouldEqual(count);
            elements[string.Empty].Count.ShouldEqual(objectCount);
            elements[SpyPropertyName].Count.ShouldEqual(1);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
 public void ValidatorShouldValidateUsingDataAnnotationAttributes()
 {
     var result = new ValidationResult("error", new[] { DisplayName });
     var dictionary = new Dictionary<object, object>();
     var propertyInfo = typeof(SpyValidationClass).GetProperty(SpyPropertyName);
     DisplayNameProvider.GetNameDelegate = info =>
     {
         info.ShouldEqual(propertyInfo);
         return DisplayName + propertyInfo.Name;
     };
     DataAnnotationValidatior.GetValidationElementsDelegate = null;
     DataAnnotationValidatior.ElementsCache.Clear();
     DataAnnotationValidatior.DisplayNameProvider = null;
     var validationClass = new SpyValidationClass { 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 validationResult = DataAnnotationValidatior.GetValidationElements(validationClass)[SpyPropertyName]
         .Single()
         .Validate(validationContext)
         .OfType<ValidationResult>()
         .Single();
     validationResult.MemberNames.SequenceEqual(result.MemberNames).ShouldBeTrue();
     validationResult.ErrorMessage.ShouldEqual(result.ErrorMessage);
 }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
        }