public void GetValidators_DoesNotCacheValidatorsWithIsReusableFalse() { // Arrange var cache = new ValidatorCache(); var metadata = new TestModelMetadataProvider().GetMetadataForProperty(typeof(TypeWithProperty), "Property1"); var validatorProvider = new ProviderWithNonReusableValidators(); // Act - 1 var validators1 = cache.GetValidators(metadata, validatorProvider); // Assert - 1 var validator1 = Assert.IsType <DataAnnotationsModelValidator>(validators1[0]); var validator2 = Assert.IsType <DataAnnotationsModelValidator>(validators1[1]); Assert.Contains(validator1.Attribute, metadata.ValidatorMetadata); // Copied by provider Assert.Contains(validator2.Attribute, metadata.ValidatorMetadata); // Copied by provider // Act - 2 var validators2 = cache.GetValidators(metadata, validatorProvider); // Assert - 2 Assert.NotSame(validators1, validators2); var requiredValidator = Assert.Single(validators2.Where(v => (v as DataAnnotationsModelValidator).Attribute is RequiredAttribute)); Assert.Contains(requiredValidator, validators1); // cached var stringLengthValidator = Assert.Single(validators2.Where(v => (v as DataAnnotationsModelValidator).Attribute is StringLengthAttribute)); Assert.DoesNotContain(stringLengthValidator, validators1); // not cached }
public void GetValidators_CachesAllValidators() { // Arrange var cache = new ValidatorCache(); var metadata = new TestModelMetadataProvider().GetMetadataForProperty(typeof(TypeWithProperty), "Property1"); var validatorProvider = TestModelValidatorProvider.CreateDefaultProvider(); // Act - 1 var validators1 = cache.GetValidators(metadata, validatorProvider); // Assert - 1 var attribute1 = Assert.IsType <DataAnnotationsModelValidator>(validators1[0]).Attribute; var attribute2 = Assert.IsType <DataAnnotationsModelValidator>(validators1[1]).Attribute; Assert.Contains(attribute1, metadata.ValidatorMetadata); // Copied by provider Assert.Contains(attribute2, metadata.ValidatorMetadata); // Copied by provider // Act - 2 var validators2 = cache.GetValidators(metadata, validatorProvider); // Assert - 2 Assert.Same(validators1, validators2); Assert.Contains(validators1[0], validators2); // Cached Assert.Contains(validators1[1], validators2); // Cached }
public void GetValidators_DoesNotCacheValidatorsWithIsReusableFalse() { // Arrange var cache = new ValidatorCache(); var metadata = new TestModelMetadataProvider().GetMetadataForProperty(typeof(TypeWithProperty), "Property1"); var validatorProvider = new ProviderWithNonReusableValidators(); // Act - 1 var validators1 = cache.GetValidators(metadata, validatorProvider); // Assert - 1 var validator1 = Assert.IsType<DataAnnotationsModelValidator>(validators1[0]); var validator2 = Assert.IsType<DataAnnotationsModelValidator>(validators1[1]); Assert.Contains(validator1.Attribute, metadata.ValidatorMetadata); // Copied by provider Assert.Contains(validator2.Attribute, metadata.ValidatorMetadata); // Copied by provider // Act - 2 var validators2 = cache.GetValidators(metadata, validatorProvider); // Assert - 2 Assert.NotSame(validators1, validators2); var requiredValidator = Assert.Single(validators2.Where(v => (v as DataAnnotationsModelValidator).Attribute is RequiredAttribute)); Assert.Contains(requiredValidator, validators1); // cached var stringLengthValidator = Assert.Single(validators2.Where(v => (v as DataAnnotationsModelValidator).Attribute is StringLengthAttribute)); Assert.DoesNotContain(stringLengthValidator, validators1); // not cached }
public void GetValidators_CachesAllValidators() { // Arrange var cache = new ValidatorCache(); var metadata = new TestModelMetadataProvider().GetMetadataForProperty(typeof(TypeWithProperty), "Property1"); var validatorProvider = TestModelValidatorProvider.CreateDefaultProvider(); // Act - 1 var validators1 = cache.GetValidators(metadata, validatorProvider); // Assert - 1 var attribute1 = Assert.IsType<DataAnnotationsModelValidator>(validators1[0]).Attribute; var attribute2 = Assert.IsType<DataAnnotationsModelValidator>(validators1[1]).Attribute; Assert.Contains(attribute1, metadata.ValidatorMetadata); // Copied by provider Assert.Contains(attribute2, metadata.ValidatorMetadata); // Copied by provider // Act - 2 var validators2 = cache.GetValidators(metadata, validatorProvider); // Assert - 2 Assert.Same(validators1, validators2); Assert.Contains(validators1[0], validators2); // Cached Assert.Contains(validators1[1], validators2); // Cached }
public override ValidationVisitor GetValidationVisitor( ActionContext actionContext, IModelValidatorProvider validatorProvider, ValidatorCache validatorCache, IModelMetadataProvider metadataProvider, ValidationStateDictionary validationState) { return(new ValidationVisitor( actionContext, validatorProvider, validatorCache, metadataProvider, validationState)); }
/// <summary> /// Initializes a new instance of <see cref="DefaultObjectValidator"/>. /// </summary> /// <param name="modelMetadataProvider">The <see cref="IModelMetadataProvider"/>.</param> /// <param name="validatorCache">The <see cref="ValidatorCache"/>.</param> public DefaultObjectValidator( IModelMetadataProvider modelMetadataProvider, ValidatorCache validatorCache) { if (modelMetadataProvider == null) { throw new ArgumentNullException(nameof(modelMetadataProvider)); } if (validatorCache == null) { throw new ArgumentNullException(nameof(validatorCache)); } _modelMetadataProvider = modelMetadataProvider; _validatorCache = validatorCache; }
/// <summary> /// Initializes a new instance of <see cref="DefaultObjectValidator"/>. /// </summary> /// <param name="modelMetadataProvider">The <see cref="IModelMetadataProvider"/>.</param> /// <param name="validatorCache">The <see cref="ValidatorCache"/>.</param> public DefaultObjectValidator( IModelMetadataProvider modelMetadataProvider, ValidatorCache validatorCache) { if (modelMetadataProvider == null) { throw new ArgumentNullException(nameof(modelMetadataProvider)); } if (validatorCache == null) { throw new ArgumentNullException(nameof(validatorCache)); } _modelMetadataProvider = modelMetadataProvider; _validatorCache = validatorCache; }
/// <summary> /// Initializes a new instance of <see cref="DefaultObjectValidator"/>. /// </summary> /// <param name="modelMetadataProvider">The <see cref="IModelMetadataProvider"/>.</param> /// <param name="validatorProviders">The list of <see cref="IModelValidatorProvider"/>.</param> public DefaultObjectValidator( IModelMetadataProvider modelMetadataProvider, IList<IModelValidatorProvider> validatorProviders) { if (modelMetadataProvider == null) { throw new ArgumentNullException(nameof(modelMetadataProvider)); } if (validatorProviders == null) { throw new ArgumentNullException(nameof(validatorProviders)); } _modelMetadataProvider = modelMetadataProvider; _validatorCache = new ValidatorCache(); _validatorProvider = new CompositeModelValidatorProvider(validatorProviders); }
/// <summary> /// Initializes a new instance of <see cref="DefaultObjectValidator"/>. /// </summary> /// <param name="modelMetadataProvider">The <see cref="IModelMetadataProvider"/>.</param> /// <param name="validatorProviders">The list of <see cref="IModelValidatorProvider"/>.</param> public DefaultObjectValidator( IModelMetadataProvider modelMetadataProvider, IList <IModelValidatorProvider> validatorProviders) { if (modelMetadataProvider == null) { throw new ArgumentNullException(nameof(modelMetadataProvider)); } if (validatorProviders == null) { throw new ArgumentNullException(nameof(validatorProviders)); } _modelMetadataProvider = modelMetadataProvider; _validatorCache = new ValidatorCache(); _validatorProvider = new CompositeModelValidatorProvider(validatorProviders); }