public void RegisterDefaultAdapter() { var oldFactory = DataAnnotationsModelValidatorProvider.DefaultAttributeFactory; try { // Arrange var metadata = ModelMetadataProviders.Current.GetMetadataForType( () => null, typeof(MyValidatedClass) ); var context = new ControllerContext(); DataAnnotationsModelValidatorProvider.RegisterDefaultAdapter( typeof(MyDefaultValidationAttributeAdapter) ); // Act var result = new DataAnnotationsModelValidatorProvider() .GetValidators(metadata, context) .Single(); // Assert Assert.IsType <MyDefaultValidationAttributeAdapter>(result); } finally { DataAnnotationsModelValidatorProvider.DefaultAttributeFactory = oldFactory; } }
public void RegisterDefaultAdapterGuardClauses() { // Adapter type cannot be null Assert.ThrowsArgumentNull( () => DataAnnotationsModelValidatorProvider.RegisterDefaultAdapter(null), "adapterType"); // Adapter must derive from ModelValidator Assert.Throws <ArgumentException>( () => DataAnnotationsModelValidatorProvider.RegisterDefaultAdapter(typeof(object)), "The type System.Object must derive from System.Web.Mvc.ModelValidator\r\nParameter name: adapterType"); // Adapter must have the expected constructor Assert.Throws <ArgumentException>( () => DataAnnotationsModelValidatorProvider.RegisterDefaultAdapter(typeof(MyValidationAttributeAdapterBadCtor)), "The type System.Web.Mvc.Test.DataAnnotationsModelValidatorProviderTest+MyValidationAttributeAdapterBadCtor must have a public constructor which accepts three parameters of types System.Web.Mvc.ModelMetadata, System.Web.Mvc.ControllerContext, and System.ComponentModel.DataAnnotations.ValidationAttribute\r\nParameter name: adapterType"); }