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 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 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 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.Same(metadata, result); CreateMetadataParams parms = provider.CreateMetadataLog.Single(p => p.ModelType == typeof(TypeModel)); Assert.True(parms.Attributes.Any(a => a is ReadOnlyAttribute)); }
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 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); }