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 CreateValidators_ModelValidatorAttributeOnClass() { // Arrange var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); var validatorProvider = TestModelValidatorProvider.CreateDefaultProvider(); var metadata = metadataProvider.GetMetadataForType(typeof(ModelValidatorAttributeOnClass)); var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); // Act validatorProvider.CreateValidators(context); // Assert var validatorItems = context.Results; var validator = Assert.IsType <CustomModelValidatorAttribute>(Assert.Single(validatorItems).Validator); Assert.Equal("Class", validator.Tag); }
public void CreateValidators_ForIValidatableObject() { // Arrange var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); var validatorProvider = TestModelValidatorProvider.CreateDefaultProvider(); var metadata = metadataProvider.GetMetadataForType(typeof(ValidatableObject)); var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); // Act validatorProvider.CreateValidators(context); // Assert var validatorItems = context.Results; var validatorItem = Assert.Single(validatorItems); Assert.IsType <ValidatableObjectAdapter>(validatorItem.Validator); }
public void CreateValidators_ModelValidatorAttributeOnPropertyAndClass() { // Arrange var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); var validatorProvider = TestModelValidatorProvider.CreateDefaultProvider(); var metadata = metadataProvider.GetMetadataForProperty( typeof(ModelValidatorAttributeOnPropertyAndClass), nameof(ModelValidatorAttributeOnPropertyAndClass.Property)); var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); // Act validatorProvider.CreateValidators(context); // Assert var validatorItems = context.Results; Assert.Equal(2, validatorItems.Count); Assert.Single(validatorItems, v => Assert.IsType <CustomModelValidatorAttribute>(v.Validator).Tag == "Class"); Assert.Single(validatorItems, v => Assert.IsType <CustomModelValidatorAttribute>(v.Validator).Tag == "Property"); }
public void CreateValidators_FromModelMetadataType_MergedValidators() { // Arrange var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); var validatorProvider = TestModelValidatorProvider.CreateDefaultProvider(); var metadata = metadataProvider.GetMetadataForProperty( typeof(ProductViewModel), nameof(ProductViewModel.Name)); var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); // Act validatorProvider.CreateValidators(context); // Assert var validatorItems = context.Results; Assert.Equal(2, validatorItems.Count); Assert.Single(validatorItems, v => ((DataAnnotationsModelValidator)v.Validator).Attribute is RegularExpressionAttribute); Assert.Single(validatorItems, v => ((DataAnnotationsModelValidator)v.Validator).Attribute is StringLengthAttribute); }
public void CreateValidators_FromModelMetadataType_SingleValidator() { // Arrange var metadataProvider = TestModelMetadataProvider.CreateDefaultProvider(); var validatorProvider = TestModelValidatorProvider.CreateDefaultProvider(); var metadata = metadataProvider.GetMetadataForProperty( typeof(ProductViewModel), nameof(ProductViewModel.Id)); var context = new ModelValidatorProviderContext(metadata, GetValidatorItems(metadata)); // Act validatorProvider.CreateValidators(context); // Assert var validatorItems = context.Results; var adapter = Assert.IsType <DataAnnotationsModelValidator>(Assert.Single(validatorItems).Validator); Assert.IsType <RangeAttribute>(adapter.Attribute); }