public void GetMetadataForPropertyNullOrEmptyPropertyNameThrows() { // Arrange TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); // Act & Assert Assert.ThrowsArgument( () => provider.GetMetadataForProperty( modelAccessor: null, containerType: typeof(object), propertyName: null ), "propertyName", "The argument 'propertyName' is null or empty." ); Assert.ThrowsArgument( () => provider.GetMetadataForProperty( modelAccessor: null, containerType: typeof(object), propertyName: String.Empty ), "propertyName", "The argument 'propertyName' is null or empty." ); }
public void GetMetadataForPropertyWithLocalAttributes() { // Arrange TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); ModelMetadata metadata = new ModelMetadata( provider, typeof(PropertyModel), null, typeof(int), "LocalAttributes" ); provider.CreateMetadataReturnValue = metadata; // Act ModelMetadata result = provider.GetMetadataForProperty( null, typeof(PropertyModel), "LocalAttributes" ); // Assert Assert.Same(metadata, result); Assert.Contains( provider.CreateMetadataLog.Single().Attributes, a => a is RequiredAttribute ); }
public void GetMetadataForPropertiesCreatesMetadataForAllPropertiesOnModelWithPropertyValues() { // Arrange var model = new PropertyModel { LocalAttributes = 42, MetadataAttributes = "hello", MixedAttributes = 21.12 }; var provider = new TestableAssociatedMetadataProvider(); // Act // Call ToList() to force the lazy evaluation to evaluate provider.GetMetadataForProperties(model, typeof(PropertyModel)).ToList(); // Assert var local = Assert.Single( provider.CreateMetadataPrototypeLog, m => m.ContainerType == typeof(PropertyModel) && m.PropertyName == "LocalAttributes"); Assert.Equal(typeof(int), local.ModelType); Assert.True(local.Attributes.Any(a => a is RequiredAttribute)); var metadata = Assert.Single( provider.CreateMetadataPrototypeLog, m => m.ContainerType == typeof(PropertyModel) && m.PropertyName == "MetadataAttributes"); Assert.Equal(typeof(string), metadata.ModelType); Assert.True(metadata.Attributes.Any(a => a is RangeAttribute)); var mixed = Assert.Single( provider.CreateMetadataPrototypeLog, m => m.ContainerType == typeof(PropertyModel) && m.PropertyName == "MixedAttributes"); Assert.Equal(typeof(double), mixed.ModelType); Assert.True(mixed.Attributes.Any(a => a is RequiredAttribute)); Assert.True(mixed.Attributes.Any(a => a is RangeAttribute)); }
public void GetMetadataForPropertyWithMixedAttributes() { // Arrange TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); ModelMetadata metadata = new ModelMetadata( provider, typeof(PropertyModel), null, typeof(double), "MixedAttributes" ); provider.CreateMetadataReturnValue = metadata; // Act ModelMetadata result = provider.GetMetadataForProperty( null, typeof(PropertyModel), "MixedAttributes" ); // Assert Assert.Same(metadata, result); CreateMetadataParams parms = provider.CreateMetadataLog.Single( p => p.PropertyName == "MixedAttributes" ); Assert.Contains(parms.Attributes, a => a is RequiredAttribute); Assert.Contains(parms.Attributes, a => a is RangeAttribute); }
public void GetMetadataForProperties_ExcludesIndexers() { // Arrange var value = "some value"; var model = new ModelWithIndexer { Value = value }; var provider = new TestableAssociatedMetadataProvider(); var modelType = model.GetType(); // Act provider.GetMetadataForProperties(model, modelType).ToList(); // Assert Assert.Equal(2, provider.CreateMetadataFromPrototypeLog.Count); Assert.Equal(value, provider.CreateMetadataFromPrototypeLog[0].Model); Assert.Null(provider.CreateMetadataFromPrototypeLog[1].Model); var valueMetadata = Assert.Single( provider.CreateMetadataPrototypeLog, m => m.ContainerType == modelType && m.PropertyName == "Value"); Assert.Equal(typeof(string), valueMetadata.ModelType); Assert.Single(valueMetadata.Attributes.OfType <MinLengthAttribute>()); var testPropertyMetadata = Assert.Single( provider.CreateMetadataPrototypeLog, m => m.ContainerType == modelType && m.PropertyName == "TestProperty"); Assert.Equal(typeof(string), testPropertyMetadata.ModelType); }
public void GetMetadataForTypeIncludesAttributesOnType() { TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); ModelMetadata metadata = new ModelMetadata( provider, null, null, typeof(TypeModel), null ); provider.CreateMetadataFromPrototypeReturnValue = metadata; // Act ModelMetadata result = provider.GetMetadataForType(null, typeof(TypeModel)); // Assert Assert.Same(metadata, result); CreateMetadataPrototypeParams parms = Assert.Single( provider.CreateMetadataPrototypeLog, p => p.ModelType == typeof(TypeModel) ); Assert.Contains(parms.Attributes, a => a is ReadOnlyAttribute); }
public void GetMetadataForPropertyWithMetadataAttributes() { // Arrange TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); ModelMetadata metadata = new ModelMetadata( provider, typeof(PropertyModel), null, typeof(string), "MetadataAttributes" ); provider.CreateMetadataFromPrototypeReturnValue = metadata; // Act ModelMetadata result = provider.GetMetadataForProperty( null, typeof(PropertyModel), "MetadataAttributes" ); // Assert Assert.Same(metadata, result); CreateMetadataPrototypeParams parms = Assert.Single( provider.CreateMetadataPrototypeLog, parameters => parameters.PropertyName == "MetadataAttributes" ); Assert.Contains(parms.Attributes, a => a is RangeAttribute); }
public void GetMetadataForPropertiesCreatesMetadataForAllPropertiesOnModelWithPropertyValues() { // Arrange PropertyModel model = new PropertyModel { LocalAttributes = 42, MetadataAttributes = "hello", MixedAttributes = 21.12 }; TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); // Act provider.GetMetadataForProperties(model, typeof(PropertyModel)).ToList(); // Call ToList() to force the lazy evaluation to evaluate // Assert CreateMetadataParams local = provider.CreateMetadataLog.Single(m => m.ContainerType == typeof(PropertyModel) && m.PropertyName == "LocalAttributes"); Assert.AreEqual(typeof(int), local.ModelType); Assert.AreEqual(42, local.Model); Assert.IsTrue(local.Attributes.Any(a => a is RequiredAttribute)); CreateMetadataParams metadata = provider.CreateMetadataLog.Single(m => m.ContainerType == typeof(PropertyModel) && m.PropertyName == "MetadataAttributes"); Assert.AreEqual(typeof(string), metadata.ModelType); Assert.AreEqual("hello", metadata.Model); Assert.IsTrue(metadata.Attributes.Any(a => a is RangeAttribute)); CreateMetadataParams mixed = provider.CreateMetadataLog.Single(m => m.ContainerType == typeof(PropertyModel) && m.PropertyName == "MixedAttributes"); Assert.AreEqual(typeof(double), mixed.ModelType); Assert.AreEqual(21.12, mixed.Model); Assert.IsTrue(mixed.Attributes.Any(a => a is RequiredAttribute)); Assert.IsTrue(mixed.Attributes.Any(a => a is RangeAttribute)); }
public void MetadataAwareAttributeCanModifyPropertyMetadata() { // Arrange TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); provider.CreateMetadataReturnValue = new ModelMetadata( provider, typeof(ClassWithAdditionalMetadata), null, typeof(int), "MyProperty" ); // Act ModelMetadata metadata = provider.GetMetadataForProperty( null, typeof(ClassWithAdditionalMetadata), "MyProperty" ); // Assert var kvp = metadata.AdditionalValues.Single(); Assert.Equal("PropertyName", kvp.Key); Assert.Equal("PropertyValue", kvp.Value); }
public void GetMetadataForPropertyNullContainerTypeThrows() { // Arrange TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); // Act & Assert ExceptionHelper.ExpectArgumentNullException( () => provider.GetMetadataForProperty(null /* model */, null /* containerType */, "propertyName"), "containerType"); }
public void GetMetadataForPropertiesNullContainerTypeThrows() { // Arrange TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); // Act & Assert ExceptionHelper.ExpectArgumentNullException( () => provider.GetMetadataForProperties(new Object(), null), "containerType"); }
public void GetMetadataForPropertiesNullContainerTypeThrows() { // Arrange TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); // Act & Assert Assert.ThrowsArgumentNull( () => provider.GetMetadataForProperties(new Object(), containerType: null), "containerType"); }
public void GetMetadataForPropertiesNullContainerTypeThrows() { // Arrange TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); // Act & Assert Assert.ThrowsArgumentNull( () => provider.GetMetadataForProperties(new Object(), null), "containerType"); }
public void GetMetadataForPropertyNullContainerTypeThrows() { // Arrange TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); // Act & Assert Assert.ThrowsArgumentNull( () => provider.GetMetadataForProperty(modelAccessor: null, containerType: null, propertyName: "propertyName"), "containerType"); }
public void GetMetadataForTypeNullModelTypeThrows() { // Arrange TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); // Act & Assert Assert.ThrowsArgumentNull( () => provider.GetMetadataForType(() => new Object(), null), "modelType"); }
public void GetMetadataForPropertyNullContainerTypeThrows() { // Arrange TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); // Act & Assert Assert.ThrowsArgumentNull( () => provider.GetMetadataForProperty(null /* model */, null /* containerType */, "propertyName"), "containerType"); }
public void GetMetadataForPropertyInvalidPropertyNameThrows() { // Arrange TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); // Act & Assert Assert.Throws <ArgumentException>( () => provider.GetMetadataForProperty(null, typeof(object), "BadPropertyName"), "The property System.Object.BadPropertyName could not be found."); }
public void GetMetadataForPropertyInvalidPropertyNameThrows() { // Arrange var provider = new TestableAssociatedMetadataProvider(); // Act & Assert ExceptionAssert.ThrowsArgument( () => provider.GetMetadataForProperty(modelAccessor: null, containerType: typeof(object), propertyName: "BadPropertyName"), "propertyName", "The property System.Object.BadPropertyName could not be found."); }
public void ReadOnlyAttributeIsPreservedForReadOnlyModelProperties() { // Arrange TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); // Act provider.GetMetadataForProperty(() => null, typeof(ModelWithReadOnlyProperty), "ReadOnlyProperty"); // Assert CreateMetadataParams parms = provider.CreateMetadataLog.Single(); Assert.IsTrue(parms.Attributes.Any(a => a is ReadOnlyAttribute)); }
public void ReadOnlyAttributeIsFilteredOffWhenContainerTypeIsViewUserControl() { // Arrange TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); // Act provider.GetMetadataForProperty(() => null, typeof(ViewUserControl<PropertyModel>), "Model"); // Assert CreateMetadataParams parms = provider.CreateMetadataLog.Single(); Assert.IsFalse(parms.Attributes.Any(a => a is ReadOnlyAttribute)); }
public void ReadOnlyAttributeIsFilteredOffWhenContainerTypeIsViewPage() { // Arrange TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); // Act provider.GetMetadataForProperty(() => null, typeof(ViewPage <PropertyModel>), "Model"); // Assert CreateMetadataParams parms = provider.CreateMetadataLog.Single(); Assert.DoesNotContain(parms.Attributes, a => a is ReadOnlyAttribute); }
public void GetMetadataForPropertyNullOrEmptyPropertyNameThrows() { // Arrange var provider = new TestableAssociatedMetadataProvider(); // Act & Assert ExceptionAssert.ThrowsArgumentNullOrEmpty( () => provider.GetMetadataForProperty(modelAccessor: null, containerType: typeof(object), propertyName: null), "propertyName"); ExceptionAssert.ThrowsArgumentNullOrEmpty( () => provider.GetMetadataForProperty(modelAccessor: null, containerType: typeof(object), propertyName: String.Empty), "propertyName"); }
public void GetMetadataForParameterNullOrEmptyPropertyNameThrows() { // Arrange var provider = new TestableAssociatedMetadataProvider(); // Act & Assert ExceptionAssert.ThrowsArgumentNullOrEmpty( () => provider.GetMetadataForParameter(modelAccessor: null, methodInfo: null, parameterName: null), "parameterName"); ExceptionAssert.ThrowsArgumentNullOrEmpty( () => provider.GetMetadataForParameter(modelAccessor: null, methodInfo: null, parameterName: null), "parameterName"); }
public void ReadOnlyAttributeIsPreservedForReadOnlyModelProperties() { // Arrange TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); // Act provider.GetMetadataForProperty(() => null, typeof(ModelWithReadOnlyProperty), "ReadOnlyProperty"); // Assert CreateMetadataParams parms = provider.CreateMetadataLog.Single(); Assert.True(parms.Attributes.Any(a => a is ReadOnlyAttribute)); }
public void GetMetadataForPropertyNullOrEmptyPropertyNameThrows() { // Arrange TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); // Act & Assert Assert.ThrowsArgumentNullOrEmpty( () => provider.GetMetadataForProperty(null /* model */, typeof(object), null /* propertyName */), "propertyName"); Assert.ThrowsArgumentNullOrEmpty( () => provider.GetMetadataForProperty(null, typeof(object), String.Empty), "propertyName"); }
public void GetMetadataForPropertyWithNullContainerReturnsMetadataWithNullValuesForProperties() { // Arrange TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); // Act provider.GetMetadataForProperties(null, typeof(PropertyModel)).ToList(); // Call ToList() to force the lazy evaluation to evaluate // Assert Assert.IsTrue(provider.CreateMetadataLog.Any()); foreach (var parms in provider.CreateMetadataLog) { Assert.IsNull(parms.Model); } }
public void GetMetadataForPropertyWithLocalAttributes() { // Arrange TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); ModelMetadata metadata = new ModelMetadata(provider, typeof(PropertyModel), null, typeof(int), "LocalAttributes"); provider.CreateMetadataFromPrototypeReturnValue = metadata; // Act ModelMetadata result = provider.GetMetadataForProperty(null, typeof(PropertyModel), "LocalAttributes"); // Assert Assert.Same(metadata, result); Assert.True(provider.CreateMetadataPrototypeLog.Single(parameters => parameters.PropertyName == "LocalAttributes").Attributes.Any(a => a is RequiredAttribute)); }
public void GetMetadataForPropertyWithNullContainerReturnsMetadataWithNullValuesForProperties() { // Arrange var provider = new TestableAssociatedMetadataProvider(); // Act provider.GetMetadataForProperties(null, typeof(PropertyModel)).ToList(); // Call ToList() to force the lazy evaluation to evaluate // Assert Assert.NotEmpty(provider.CreateMetadataFromPrototypeLog); foreach (var parms in provider.CreateMetadataFromPrototypeLog) { Assert.Null(parms.Model); } }
public void GetMetadataForTypeIncludesAttributesOnType() { var provider = new TestableAssociatedMetadataProvider(); var metadata = new ModelMetadata(provider, null, null, typeof(TypeModel), null); provider.CreateMetadataFromPrototypeReturnValue = metadata; // Act var result = provider.GetMetadataForType(null, typeof(TypeModel)); // Assert Assert.Same(metadata, result); var parms = provider.CreateMetadataPrototypeLog.Single(p => p.ModelType == typeof(TypeModel)); Assert.True(parms.Attributes.Any(a => a is ReadOnlyAttribute)); }
public void GetMetadataForTypeIncludesAttributesOnType() { TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); ModelMetadata metadata = new ModelMetadata(provider, null, null, typeof(TypeModel), null); provider.CreateMetadataReturnValue = metadata; // Act ModelMetadata result = provider.GetMetadataForType(null, typeof(TypeModel)); // Assert Assert.AreSame(metadata, result); CreateMetadataParams parms = provider.CreateMetadataLog.Single(p => p.ModelType == typeof(TypeModel)); Assert.IsTrue(parms.Attributes.Any(a => a is ReadOnlyAttribute)); }
public void MetadataAwareAttributeCanModifyTypeMetadata() { // Arrange TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); provider.CreateMetadataReturnValue = new ModelMetadata(provider, null, null, typeof(ClassWithAdditionalMetadata), null); // Act ModelMetadata metadata = provider.GetMetadataForType(null, typeof(ClassWithAdditionalMetadata)); // Assert var kvp = metadata.AdditionalValues.Single(); Assert.AreEqual("ClassName", kvp.Key); Assert.AreEqual("ClassValue", kvp.Value); }
public void GetMetadataForPropertyWithMetadataAttributes() { // Arrange var provider = new TestableAssociatedMetadataProvider(); var metadata = new ModelMetadata(provider, typeof(PropertyModel), null, typeof(string), "MetadataAttributes"); provider.CreateMetadataFromPrototypeReturnValue = metadata; // Act var result = provider.GetMetadataForProperty(null, typeof(PropertyModel), "MetadataAttributes"); // Assert Assert.Same(metadata, result); var parmaters = provider.CreateMetadataPrototypeLog.Single(p => p.PropertyName == "MetadataAttributes"); Assert.True(parmaters.Attributes.Any(a => a is RangeAttribute)); }
public void GetMetadataForPropertyWithMetadataAttributes() { // Arrange TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); ModelMetadata metadata = new ModelMetadata(provider, typeof(PropertyModel), null, typeof(string), "MetadataAttributes"); provider.CreateMetadataReturnValue = metadata; // Act ModelMetadata result = provider.GetMetadataForProperty(null, typeof(PropertyModel), "MetadataAttributes"); // Assert Assert.AreSame(metadata, result); CreateMetadataParams parms = provider.CreateMetadataLog.Single(p => p.PropertyName == "MetadataAttributes"); Assert.IsTrue(parms.Attributes.Any(a => a is RangeAttribute)); }
public void GetMetadataForPropertyWithMixedAttributes() { // Arrange var provider = new TestableAssociatedMetadataProvider(); var metadata = new ModelMetadata(provider, typeof(PropertyModel), null, typeof(double), "MixedAttributes"); provider.CreateMetadataFromPrototypeReturnValue = metadata; // Act var result = provider.GetMetadataForProperty(null, typeof(PropertyModel), "MixedAttributes"); // Assert Assert.Same(metadata, result); var parms = Assert.Single(provider.CreateMetadataPrototypeLog, p => p.PropertyName == "MixedAttributes"); Assert.Single(parms.Attributes, a => a is RequiredAttribute); Assert.Single(parms.Attributes, a => a is RangeAttribute); }
public void GetMetadataForPropertiesCreatesMetadataForAllPropertiesOnModelWithPropertyValues() { // Arrange PropertyModel model = new PropertyModel { LocalAttributes = 42, MetadataAttributes = "hello", MixedAttributes = 21.12 }; TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); // Act provider.GetMetadataForProperties(model, typeof(PropertyModel)).ToList(); // Call ToList() to force the lazy evaluation to evaluate // Assert CreateMetadataParams local = provider.CreateMetadataLog.Single( m => m.ContainerType == typeof(PropertyModel) && m.PropertyName == "LocalAttributes" ); Assert.Equal(typeof(int), local.ModelType); Assert.Equal(42, local.Model); Assert.Contains(local.Attributes, a => a is RequiredAttribute); CreateMetadataParams metadata = provider.CreateMetadataLog.Single( m => m.ContainerType == typeof(PropertyModel) && m.PropertyName == "MetadataAttributes" ); Assert.Equal(typeof(string), metadata.ModelType); Assert.Equal("hello", metadata.Model); Assert.Contains(metadata.Attributes, a => a is RangeAttribute); CreateMetadataParams mixed = provider.CreateMetadataLog.Single( m => m.ContainerType == typeof(PropertyModel) && m.PropertyName == "MixedAttributes" ); Assert.Equal(typeof(double), mixed.ModelType); Assert.Equal(21.12, mixed.Model); Assert.Contains(mixed.Attributes, a => a is RequiredAttribute); Assert.Contains(mixed.Attributes, a => a is RangeAttribute); }
public void MetadataAwareAttributeCanModifyPropertyMetadata() { // Arrange TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); provider.CreateMetadataReturnValue = new ModelMetadata(provider, typeof(ClassWithAdditionalMetadata), null, typeof(int), "MyProperty"); // Act ModelMetadata metadata = provider.GetMetadataForProperty(null, typeof(ClassWithAdditionalMetadata), "MyProperty"); // Assert var kvp = metadata.AdditionalValues.Single(); Assert.AreEqual("PropertyName", kvp.Key); Assert.AreEqual("PropertyValue", kvp.Value); }
public void MetadataAwareAttributeCanModifyTypeMetadata() { // Arrange TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); provider.CreateMetadataReturnValue = new ModelMetadata(provider, null, null, typeof(ClassWithAdditionalMetadata), null); // Act ModelMetadata metadata = provider.GetMetadataForType(null, typeof(ClassWithAdditionalMetadata)); // Assert var kvp = metadata.AdditionalValues.Single(); Assert.Equal("ClassName", kvp.Key); Assert.Equal("ClassValue", kvp.Value); }
public void GetMetadataForPropertyInvalidPropertyNameThrows() { // Arrange TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); // Act & Assert Assert.ThrowsArgument( () => provider.GetMetadataForProperty(modelAccessor: null, containerType: typeof(object), propertyName: "BadPropertyName"), "propertyName", "The property System.Object.BadPropertyName could not be found."); }
public void GetMetadataForPropertyNullOrEmptyPropertyNameThrows() { // Arrange TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); // Act & Assert ExceptionHelper.ExpectArgumentExceptionNullOrEmpty( () => provider.GetMetadataForProperty(null /* model */, typeof(object), null /* propertyName */), "propertyName"); ExceptionHelper.ExpectArgumentExceptionNullOrEmpty( () => provider.GetMetadataForProperty(null, typeof(object), String.Empty), "propertyName"); }
public void GetMetadataForTypeNullModelTypeThrows() { // Arrange TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); // Act & Assert Assert.ThrowsArgumentNull( () => provider.GetMetadataForType(() => new Object(), modelType: null), "modelType"); }
public void GetMetadataForPropertyNullOrEmptyPropertyNameThrows() { // Arrange TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); // Act & Assert Assert.ThrowsArgument( () => provider.GetMetadataForProperty(modelAccessor: null, containerType: typeof(object), propertyName: null), "propertyName", "The argument 'propertyName' is null or empty."); Assert.ThrowsArgument( () => provider.GetMetadataForProperty(modelAccessor: null, containerType: typeof(object), propertyName: String.Empty), "propertyName", "The argument 'propertyName' is null or empty."); }
public void GetMetadataForTypeNullModelTypeThrows() { // Arrange TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); // Act & Assert ExceptionHelper.ExpectArgumentNullException( () => provider.GetMetadataForType(() => new Object(), null), "modelType"); }
public void GetMetadataForPropertyWithMixedAttributes() { // Arrange TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); ModelMetadata metadata = new ModelMetadata(provider, typeof(PropertyModel), null, typeof(double), "MixedAttributes"); provider.CreateMetadataReturnValue = metadata; // Act ModelMetadata result = provider.GetMetadataForProperty(null, typeof(PropertyModel), "MixedAttributes"); // Assert Assert.AreSame(metadata, result); CreateMetadataParams parms = provider.CreateMetadataLog.Single(p => p.PropertyName == "MixedAttributes"); Assert.IsTrue(parms.Attributes.Any(a => a is RequiredAttribute)); Assert.IsTrue(parms.Attributes.Any(a => a is RangeAttribute)); }
public void GetMetadataForPropertyInvalidPropertyNameThrows() { // Arrange TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); // Act & Assert ExceptionHelper.ExpectArgumentException( () => provider.GetMetadataForProperty(null, typeof(object), "BadPropertyName"), "The property System.Object.BadPropertyName could not be found."); }
public void GetMetadataForPropertyWithLocalAttributes() { // Arrange TestableAssociatedMetadataProvider provider = new TestableAssociatedMetadataProvider(); ModelMetadata metadata = new ModelMetadata(provider, typeof(PropertyModel), null, typeof(int), "LocalAttributes"); provider.CreateMetadataReturnValue = metadata; // Act ModelMetadata result = provider.GetMetadataForProperty(null, typeof(PropertyModel), "LocalAttributes"); // Assert Assert.AreSame(metadata, result); Assert.IsTrue(provider.CreateMetadataLog.Single().Attributes.Any(a => a is RequiredAttribute)); }