public void PropertiesProperty_WithDefaultOrder_OrdersPropertyNamesAsProvided( IEnumerable <string> originalNames, IEnumerable <string> expectedNames) { // Arrange var provider = new Mock <IModelMetadataProvider>(MockBehavior.Strict); var detailsProvider = new EmptyCompositeMetadataDetailsProvider(); var expectedProperties = new List <DefaultModelMetadata>(); foreach (var originalName in originalNames) { expectedProperties.Add(new DefaultModelMetadata( provider.Object, detailsProvider, new DefaultMetadataDetails( ModelMetadataIdentity.ForProperty(typeof(int), originalName, typeof(string)), attributes: new ModelAttributes(new object[0], new object[0])))); } provider .Setup(p => p.GetMetadataForProperties(typeof(string))) .Returns(expectedProperties); var key = ModelMetadataIdentity.ForType(typeof(string)); var cache = new DefaultMetadataDetails(key, new ModelAttributes(new object[0])); var metadata = new DefaultModelMetadata(provider.Object, detailsProvider, cache); // Act var properties = metadata.Properties; // Assert Assert.Equal(expectedNames.Count(), properties.Count); Assert.Equal(expectedNames.ToArray(), properties.Select(p => p.PropertyName).ToArray()); }
public void IsBindingRequired_LeftAlone_ForNonPropertyMetadata(bool initialValue) { // Arrange var provider = new DataMemberRequiredBindingMetadataProvider(); var attributes = new object[] { new DataMemberAttribute() { IsRequired = true, } }; var key = ModelMetadataIdentity.ForType(typeof(ClassWithDataMemberIsRequiredTrue)); var context = new BindingMetadataProviderContext(key, new ModelAttributes(attributes, new object[0])); context.BindingMetadata.IsBindingRequired = initialValue; // Act provider.GetBindingMetadata(context); // Assert Assert.Equal(initialValue, context.BindingMetadata.IsBindingRequired); }