public void RegisterDefaultValidatableObjectAdapterFactoryGuardClauses()
 {
     // Factory cannot be null
     ExceptionHelper.ExpectArgumentNullException(
         () => DataAnnotations4ModelValidatorProvider.RegisterDefaultValidatableObjectAdapterFactory(null),
         "factory");
 }
        public void RegisterDefaultValidatableObjectAdapterFactory()
        {
            var oldFactory = DataAnnotations4ModelValidatorProvider.DefaultValidatableFactory;

            try {
                // Arrange
                var            metadata  = ModelMetadataProviders.Current.GetMetadataForType(() => null, typeof(MyValidatableClass));
                var            context   = new ControllerContext();
                ModelValidator validator = new Mock <ModelValidator>(metadata, context).Object;
                DataAnnotations4ValidatableObjectAdapterFactory factory = delegate { return(validator); };
                DataAnnotations4ModelValidatorProvider.RegisterDefaultValidatableObjectAdapterFactory(factory);

                // Act
                var result = new DataAnnotations4ModelValidatorProvider().GetValidators(metadata, context).Single();

                // Assert
                Assert.AreSame(validator, result);
            }
            finally {
                DataAnnotations4ModelValidatorProvider.DefaultValidatableFactory = oldFactory;
            }
        }