Clean up `AssociatedMetadataProviderTest`

- remove unused nested class `ModelWithReadOnlyProperty`
- remove unecessary nested classes `RangeAttribute` and `RequiredAttribute`
- use `Assert.NotEmpty()` and `Assert.Single()` where appropriate
This commit is contained in:
dougbu 2014-08-15 21:48:00 -07:00
parent 2eec0bbf6d
commit 266644560f
1 changed files with 30 additions and 38 deletions

View File

@ -14,6 +14,7 @@ namespace Microsoft.AspNet.Mvc.ModelBinding
public class AssociatedMetadataProviderTest public class AssociatedMetadataProviderTest
{ {
// GetMetadataForProperties // GetMetadataForProperties
[Fact] [Fact]
public void GetMetadataForPropertiesCreatesMetadataForAllPropertiesOnModelWithPropertyValues() public void GetMetadataForPropertiesCreatesMetadataForAllPropertiesOnModelWithPropertyValues()
{ {
@ -26,18 +27,21 @@ namespace Microsoft.AspNet.Mvc.ModelBinding
provider.GetMetadataForProperties(model, typeof(PropertyModel)).ToList(); provider.GetMetadataForProperties(model, typeof(PropertyModel)).ToList();
// Assert // Assert
var local = provider.CreateMetadataPrototypeLog.Single(m => m.ContainerType == typeof(PropertyModel) && var local = Assert.Single(
m.PropertyName == "LocalAttributes"); provider.CreateMetadataPrototypeLog,
m => m.ContainerType == typeof(PropertyModel) && m.PropertyName == "LocalAttributes");
Assert.Equal(typeof(int), local.ModelType); Assert.Equal(typeof(int), local.ModelType);
Assert.True(local.Attributes.Any(a => a is RequiredAttribute)); Assert.True(local.Attributes.Any(a => a is RequiredAttribute));
var metadata = provider.CreateMetadataPrototypeLog.Single(m => m.ContainerType == typeof(PropertyModel) && var metadata = Assert.Single(
m.PropertyName == "MetadataAttributes"); provider.CreateMetadataPrototypeLog,
m => m.ContainerType == typeof(PropertyModel) && m.PropertyName == "MetadataAttributes");
Assert.Equal(typeof(string), metadata.ModelType); Assert.Equal(typeof(string), metadata.ModelType);
Assert.True(metadata.Attributes.Any(a => a is RangeAttribute)); Assert.True(metadata.Attributes.Any(a => a is RangeAttribute));
var mixed = provider.CreateMetadataPrototypeLog.Single(m => m.ContainerType == typeof(PropertyModel) && var mixed = Assert.Single(
m.PropertyName == "MixedAttributes"); provider.CreateMetadataPrototypeLog,
m => m.ContainerType == typeof(PropertyModel) && m.PropertyName == "MixedAttributes");
Assert.Equal(typeof(double), mixed.ModelType); Assert.Equal(typeof(double), mixed.ModelType);
Assert.True(mixed.Attributes.Any(a => a is RequiredAttribute)); Assert.True(mixed.Attributes.Any(a => a is RequiredAttribute));
Assert.True(mixed.Attributes.Any(a => a is RangeAttribute)); Assert.True(mixed.Attributes.Any(a => a is RangeAttribute));
@ -60,17 +64,18 @@ namespace Microsoft.AspNet.Mvc.ModelBinding
Assert.Equal(value, provider.CreateMetadataFromPrototypeLog[0].Model); Assert.Equal(value, provider.CreateMetadataFromPrototypeLog[0].Model);
Assert.Null(provider.CreateMetadataFromPrototypeLog[1].Model); Assert.Null(provider.CreateMetadataFromPrototypeLog[1].Model);
var valueMetadata = provider.CreateMetadataPrototypeLog.Single(m => m.ContainerType == modelType && var valueMetadata = Assert.Single(
m.PropertyName == "Value"); provider.CreateMetadataPrototypeLog,
m => m.ContainerType == modelType && m.PropertyName == "Value");
Assert.Equal(typeof(string), valueMetadata.ModelType); Assert.Equal(typeof(string), valueMetadata.ModelType);
Assert.Single(valueMetadata.Attributes.OfType<MinLengthAttribute>()); Assert.Single(valueMetadata.Attributes.OfType<MinLengthAttribute>());
var testPropertyMetadata = provider.CreateMetadataPrototypeLog.Single(m => m.ContainerType == modelType && var testPropertyMetadata = Assert.Single(
m.PropertyName == "TestProperty"); provider.CreateMetadataPrototypeLog,
m => m.ContainerType == modelType && m.PropertyName == "TestProperty");
Assert.Equal(typeof(string), testPropertyMetadata.ModelType); Assert.Equal(typeof(string), testPropertyMetadata.ModelType);
} }
// GetMetadataForProperties
[Fact] [Fact]
public void GetMetadataForPropertyWithNullContainerReturnsMetadataWithNullValuesForProperties() public void GetMetadataForPropertyWithNullContainerReturnsMetadataWithNullValuesForProperties()
{ {
@ -81,7 +86,7 @@ namespace Microsoft.AspNet.Mvc.ModelBinding
provider.GetMetadataForProperties(null, typeof(PropertyModel)).ToList(); // Call ToList() to force the lazy evaluation to evaluate provider.GetMetadataForProperties(null, typeof(PropertyModel)).ToList(); // Call ToList() to force the lazy evaluation to evaluate
// Assert // Assert
Assert.True(provider.CreateMetadataFromPrototypeLog.Any()); Assert.NotEmpty(provider.CreateMetadataFromPrototypeLog);
foreach (var parms in provider.CreateMetadataFromPrototypeLog) foreach (var parms in provider.CreateMetadataFromPrototypeLog)
{ {
Assert.Null(parms.Model); Assert.Null(parms.Model);
@ -133,9 +138,10 @@ namespace Microsoft.AspNet.Mvc.ModelBinding
// Assert // Assert
Assert.Same(metadata, result); Assert.Same(metadata, result);
Assert.True(provider.CreateMetadataPrototypeLog var localAttributes = Assert.Single(
.Single(parameters => parameters.PropertyName == "LocalAttributes") provider.CreateMetadataPrototypeLog,
.Attributes.Any(a => a is RequiredAttribute)); parameters => parameters.PropertyName == "LocalAttributes");
Assert.Single(localAttributes.Attributes, a => a is RequiredAttribute);
} }
[Fact] [Fact]
@ -151,8 +157,10 @@ namespace Microsoft.AspNet.Mvc.ModelBinding
// Assert // Assert
Assert.Same(metadata, result); Assert.Same(metadata, result);
var parmaters = provider.CreateMetadataPrototypeLog.Single(p => p.PropertyName == "MetadataAttributes"); var parmaters = Assert.Single(
Assert.True(parmaters.Attributes.Any(a => a is RangeAttribute)); provider.CreateMetadataPrototypeLog,
p => p.PropertyName == "MetadataAttributes");
Assert.Single(parmaters.Attributes, a => a is RangeAttribute);
} }
[Fact] [Fact]
@ -168,9 +176,9 @@ namespace Microsoft.AspNet.Mvc.ModelBinding
// Assert // Assert
Assert.Same(metadata, result); Assert.Same(metadata, result);
var parms = provider.CreateMetadataPrototypeLog.Single(p => p.PropertyName == "MixedAttributes"); var parms = Assert.Single(provider.CreateMetadataPrototypeLog, p => p.PropertyName == "MixedAttributes");
Assert.True(parms.Attributes.Any(a => a is RequiredAttribute)); Assert.Single(parms.Attributes, a => a is RequiredAttribute);
Assert.True(parms.Attributes.Any(a => a is RangeAttribute)); Assert.Single(parms.Attributes, a => a is RangeAttribute);
} }
// GetMetadataForType // GetMetadataForType
@ -188,8 +196,8 @@ namespace Microsoft.AspNet.Mvc.ModelBinding
// Assert // Assert
Assert.Same(metadata, result); Assert.Same(metadata, result);
var parms = provider.CreateMetadataPrototypeLog.Single(p => p.ModelType == typeof(TypeModel)); var parms = Assert.Single(provider.CreateMetadataPrototypeLog, p => p.ModelType == typeof(TypeModel));
Assert.True(parms.Attributes.Any(a => a is ReadOnlyAttribute)); Assert.Single(parms.Attributes, a => a is ReadOnlyAttribute);
} }
#endif #endif
@ -227,22 +235,6 @@ namespace Microsoft.AspNet.Mvc.ModelBinding
public string Value { get; set; } public string Value { get; set; }
} }
private sealed class RequiredAttribute : Attribute
{
}
private sealed class RangeAttribute : Attribute
{
public RangeAttribute(int min, int max)
{
}
}
private class ModelWithReadOnlyProperty
{
public int ReadOnlyProperty { get; private set; }
}
#if NET45 // No [ReadOnly] in K #if NET45 // No [ReadOnly] in K
[ReadOnly(true)] [ReadOnly(true)]
private class TypeModel private class TypeModel