Beispiel #1
0
        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);
        }
Beispiel #2
0
        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));
        }
Beispiel #6
0
        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);
        }