public void RegisterDefaultValidatableObjectAdapterGuardClauses() { // Adapter type cannot be null Assert.ThrowsArgumentNull( () => DataAnnotationsModelValidatorProvider.RegisterDefaultValidatableObjectAdapter( null ), "adapterType" ); // Adapter must derive from ModelValidator Assert.Throws <ArgumentException>( () => DataAnnotationsModelValidatorProvider.RegisterDefaultValidatableObjectAdapter( 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.RegisterDefaultValidatableObjectAdapter( typeof(MyValidatableAdapterBadCtor) ), "The type System.Web.Mvc.Test.DataAnnotationsModelValidatorProviderTest+MyValidatableAdapterBadCtor must have a public constructor which accepts two parameters of types System.Web.Mvc.ModelMetadata and System.Web.Mvc.ControllerContext.\r\nParameter name: adapterType" ); }
public void RegisterDefaultValidatableObjectAdapter() { var oldFactory = DataAnnotationsModelValidatorProvider.DefaultValidatableFactory; try { // Arrange var metadata = ModelMetadataProviders.Current.GetMetadataForType( () => null, typeof(MyValidatableClass) ); var context = new ControllerContext(); DataAnnotationsModelValidatorProvider.RegisterDefaultValidatableObjectAdapter( typeof(MyValidatableAdapter) ); // Act var result = new DataAnnotationsModelValidatorProvider() .GetValidators(metadata, context) .Single(); // Assert Assert.IsType <MyValidatableAdapter>(result); } finally { DataAnnotationsModelValidatorProvider.DefaultValidatableFactory = oldFactory; } }