public LocalizedModelValidatorProviderTests()
 {
     _stringProvider = new Mock <IValidationMessageDataSource>();
     ValidationMessageProviders.Clear();
     ValidationMessageProviders.Add(_stringProvider.Object);
     _provider = new LocalizedModelValidatorProvider();
 }
        public void DefaultMessage()
        {
            ValidationMessageProviders.Clear();
            ValidationMessageProviders.Add(new DataAnnotationDefaultStrings());
            var model     = new TestModel();
            var validator = GetValidator(model, "Required");

            var actual = validator.Validate(model).First().Message;

            Assert.Equal("The Required field is required.", actual);
        }
Exemple #3
0
        /// <summary>
        /// Gets a list of validators.
        /// </summary>
        /// <param name="metadata">The metadata.</param>
        /// <param name="context">The context.</param>
        /// <param name="attributes">The list of validation attributes.</param>
        /// <returns>
        /// A list of validators.
        /// </returns>
        protected override IEnumerable <ModelValidator> GetValidators(ModelMetadata metadata, ControllerContext context,
                                                                      IEnumerable <Attribute> attributes)
        {
            var items = attributes.ToList();

            if (AddImplicitRequiredAttributeForValueTypes && metadata.IsRequired &&
                !items.Any(a => a is RequiredAttribute))
            {
                items.Add(new RequiredAttribute());
            }



            var validators = new List <ModelValidator>();

            foreach (var attr in items.OfType <ValidationAttribute>())
            {
                // custom message, use the default localization
                if (attr.ErrorMessageResourceName != null && attr.ErrorMessageResourceType != null)
                {
                    validators.Add(new DataAnnotationsModelValidator(metadata, context, attr));
                    continue;
                }

                // specified a message, do nothing
                if (attr.ErrorMessage != null && attr.ErrorMessage != WorkaroundMarker)
                {
                    validators.Add(new DataAnnotationsModelValidator(metadata, context, attr));
                    continue;
                }


                var ctx = new GetMessageContext(attr, metadata.ContainerType, metadata.PropertyName,
                                                Thread.CurrentThread.CurrentUICulture);

                var errorMessage   = ValidationMessageProviders.GetMessage(ctx);
                var formattedError = errorMessage == null
                                         ? GetMissingTranslationMessage(metadata, attr)
                                         : FormatErrorMessage(metadata, attr, errorMessage);

                var clientRules = GetClientRules(metadata, context, attr,
                                                 formattedError);
                validators.Add(new MyValidator(attr, formattedError, metadata, context, clientRules));
            }


            if (metadata.Model is IValidatableObject)
            {
                validators.Add(new Griffin.MvcContrib.Localization.ValidatableObjectAdapter(metadata, context));
            }


            return(validators);
        }
        public void ClientValidatable()
        {
            ValidationMessageProviders.Reset();
            var model      = new TestModel();
            var k          = new DataAnnotationsModelMetadataProvider();
            var metadata   = k.GetMetadataForType(() => model, model.GetType());
            var validators = _provider.GetValidators(metadata, new ControllerContext());

            var result = validators.ToList().First().Validate(model).ToList();

            Assert.NotEqual(0, result.Count);
        }
        public void CompareAttribute()
        {
            ValidationMessageProviders.Clear();
            ValidationMessageProviders.Add(new MvcDataSource());
            var model = new TestModel();

            model.Compare2 = "Differ";
            model.Compare1 = "Aaa";
            var validator = GetValidator(model, "Compare1");

            var actual = validator.Validate(model).First().Message;

            Assert.Equal("The Compare1 and Compare2 fields to not match.", actual);
        }
        public void RegEx()
        {
            ValidationMessageProviders.Clear();
            ValidationMessageProviders.Add(new DataAnnotationDefaultStrings());
            var model = new TestModel {
                RegEx = "word"
            };
            var validator = GetValidator(model, "RegEx");

            var actual = validator.Validate(model).First().Message;

            // regex can't be identified in the DataAnnotations resource file :(
            Assert.Equal("[en-US: RegularExpression]", actual);
        }
Exemple #7
0
        public static void RegisterValidators()
        {
            var stringProvider = new ResourceStringProvider(Resources.LocalizedStrings.ResourceManager);

            ModelMetadataProviders.Current = new LocalizedModelMetadataProvider(stringProvider);
            ModelValidatorProviders.Providers.Clear();

            ValidationMessageProviders.Clear();
            ValidationMessageProviders.Add(new MvcDataSource());
            ValidationMessageProviders.Add(new DataAnnotationDefaultStrings());
            ValidationMessageProviders.Add(new GriffinStringsProvider(stringProvider));

            var validatorProvider = new LocalizedModelValidatorProvider();

            ModelValidatorProviders.Providers.Add(validatorProvider);
        }
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            var stringProvider = new ResourceStringProvider(Resources.Resources.ResourceManager);

            System.Web.Mvc.ModelMetadataProviders.Current = new LocalizedModelMetadataProvider(stringProvider);

            ValidationMessageProviders.Clear();
            ValidationMessageProviders.Add(new GriffinStringsProvider(stringProvider)); // the rest
            ValidationMessageProviders.Add(new MvcDataSource());                        //mvc attributes
            ValidationMessageProviders.Add(new DataAnnotationDefaultStrings());         //data annotation attributes

            System.Web.Mvc.ModelValidatorProviders.Providers.Clear();
            System.Web.Mvc.ModelValidatorProviders.Providers.Add(new LocalizedModelValidatorProvider());

            DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
        }