public void GetValidatorsReturnsValidatorForIDataErrorInfoRootType() { // Arrange DataErrorInfoModelValidatorProvider validatorProvider = new DataErrorInfoModelValidatorProvider(); DataErrorInfo1 model = new DataErrorInfo1(); ModelMetadata metadata = _metadataProvider.GetMetadataForType( () => model, typeof(DataErrorInfo1) ); Type[] expectedTypes = new Type[] { typeof(DataErrorInfoModelValidatorProvider.DataErrorInfoClassModelValidator) }; // Act Type[] actualTypes = validatorProvider .GetValidators(metadata, new ControllerContext()) .Select(v => v.GetType()) .ToArray(); // Assert Assert.Equal(expectedTypes, actualTypes); }
public void PropertyValidator_Validate_DoesNotReadPropertyValue() { // Arrange ObservableModel model = new ObservableModel(); ModelMetadata metadata = _metadataProvider.GetMetadataForProperty( () => model.TheProperty, typeof(ObservableModel), "TheProperty" ); ControllerContext controllerContext = new ControllerContext(); // Act ModelValidator[] validators = new DataErrorInfoModelValidatorProvider() .GetValidators(metadata, controllerContext) .ToArray(); ModelValidationResult[] results = validators .SelectMany(o => o.Validate(model)) .ToArray(); // Assert Assert.Equal( new[] { typeof(DataErrorInfoModelValidatorProvider.DataErrorInfoPropertyModelValidator) }, Array.ConvertAll(validators, o => o.GetType()) ); Assert.Equal(new[] { "TheProperty" }, model.GetColumnNamesPassed().ToArray()); Assert.Empty(results); Assert.False(model.PropertyWasRead()); }
public void GetValidatorsThrowsIfMetadataIsNull() { // Arrange DataErrorInfoModelValidatorProvider validatorProvider = new DataErrorInfoModelValidatorProvider(); // Act & assert Assert.ThrowsArgumentNull( delegate { validatorProvider.GetValidators(null, new ControllerContext()); }, "metadata"); }
public void GetValidatorsThrowsIfContextIsNull() { // Arrange DataErrorInfoModelValidatorProvider validatorProvider = new DataErrorInfoModelValidatorProvider(); ModelMetadata metadata = _metadataProvider.GetMetadataForType(null, typeof(DataErrorInfo1)); // Act & assert Assert.ThrowsArgumentNull( delegate { validatorProvider.GetValidators(metadata, null); }, "context"); }
public void GetValidatorsReturnsEmptyCollectionIfTypeNotIDataErrorInfo() { // Arrange DataErrorInfoModelValidatorProvider validatorProvider = new DataErrorInfoModelValidatorProvider(); object model = new object(); ModelMetadata metadata = _metadataProvider.GetMetadataForType(() => model, typeof(object)); // Act ModelValidator[] validators = validatorProvider.GetValidators(metadata, new ControllerContext()).ToArray(); // Assert Assert.Empty(validators); }
public void GetValidatorsReturnsValidatorForIDataErrorInfoRootType() { // Arrange DataErrorInfoModelValidatorProvider validatorProvider = new DataErrorInfoModelValidatorProvider(); DataErrorInfo1 model = new DataErrorInfo1(); ModelMetadata metadata = _metadataProvider.GetMetadataForType(() => model, typeof(DataErrorInfo1)); Type[] expectedTypes = new Type[] { typeof(DataErrorInfoModelValidatorProvider.DataErrorInfoClassModelValidator) }; // Act Type[] actualTypes = validatorProvider.GetValidators(metadata, new ControllerContext()).Select(v => v.GetType()).ToArray(); // Assert Assert.Equal(expectedTypes, actualTypes); }
public void PropertyValidator_Validate_DoesNotReadPropertyValue() { // Arrange ObservableModel model = new ObservableModel(); ModelMetadata metadata = _metadataProvider.GetMetadataForProperty(() => model.TheProperty, typeof(ObservableModel), "TheProperty"); ControllerContext controllerContext = new ControllerContext(); // Act ModelValidator[] validators = new DataErrorInfoModelValidatorProvider().GetValidators(metadata, controllerContext).ToArray(); ModelValidationResult[] results = validators.SelectMany(o => o.Validate(model)).ToArray(); // Assert CollectionAssert.AreEqual(new Type[] { typeof(DataErrorInfoModelValidatorProvider.DataErrorInfoPropertyModelValidator) }, Array.ConvertAll(validators, o => o.GetType()), "Provider did not return expected validator."); CollectionAssert.AreEquivalent(new string[] { "TheProperty" }, model.GetColumnNamesPassed(), "Model.get_Item() was not called as expected."); Assert.AreEqual(0, results.Length); Assert.IsFalse(model.PropertyWasRead(), "Property should not have been read by provider or validator."); }
public void PropertyValidator_Validate_DoesNotReadPropertyValue() { // Arrange ObservableModel model = new ObservableModel(); ModelMetadata metadata = _metadataProvider.GetMetadataForProperty(() => model.TheProperty, typeof(ObservableModel), "TheProperty"); ControllerContext controllerContext = new ControllerContext(); // Act ModelValidator[] validators = new DataErrorInfoModelValidatorProvider().GetValidators(metadata, controllerContext).ToArray(); ModelValidationResult[] results = validators.SelectMany(o => o.Validate(model)).ToArray(); // Assert Assert.Equal(new[] { typeof(DataErrorInfoModelValidatorProvider.DataErrorInfoPropertyModelValidator) }, Array.ConvertAll(validators, o => o.GetType())); Assert.Equal(new[] { "TheProperty" }, model.GetColumnNamesPassed().ToArray()); Assert.Empty(results); Assert.False(model.PropertyWasRead()); }