Test fix: Change `CollectionModelBinderTest` to update `ModelMetadata.IsReadOnly`
- unrelated to #3482 except that I discovered the issue while investigating that issue - tests previously set `BindingDetails.IsReadOnly` for a `Type` and that was ignored - same for `DictionaryModelBinderTest`
This commit is contained in:
parent
385c21fbe2
commit
49ffeb16d2
|
|
@ -10,7 +10,6 @@ using Microsoft.AspNetCore.Http.Internal;
|
||||||
using Microsoft.AspNetCore.Mvc.Internal;
|
using Microsoft.AspNetCore.Mvc.Internal;
|
||||||
using Microsoft.AspNetCore.Mvc.ModelBinding.Test;
|
using Microsoft.AspNetCore.Mvc.ModelBinding.Test;
|
||||||
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
|
||||||
using Moq;
|
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
||||||
|
|
@ -367,11 +366,16 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
||||||
bool isReadOnly = false)
|
bool isReadOnly = false)
|
||||||
{
|
{
|
||||||
var metadataProvider = new TestModelMetadataProvider();
|
var metadataProvider = new TestModelMetadataProvider();
|
||||||
metadataProvider.ForType<IList<int>>().BindingDetails(bd => bd.IsReadOnly = isReadOnly);
|
metadataProvider
|
||||||
|
.ForProperty<ModelWithIListProperty>(nameof(ModelWithIListProperty.ListProperty))
|
||||||
|
.BindingDetails(bd => bd.IsReadOnly = isReadOnly);
|
||||||
|
var metadata = metadataProvider.GetMetadataForProperty(
|
||||||
|
typeof(ModelWithIListProperty),
|
||||||
|
nameof(ModelWithIListProperty.ListProperty));
|
||||||
|
|
||||||
var bindingContext = new DefaultModelBindingContext
|
var bindingContext = new DefaultModelBindingContext
|
||||||
{
|
{
|
||||||
ModelMetadata = metadataProvider.GetMetadataForType(typeof(IList<int>)),
|
ModelMetadata = metadata,
|
||||||
ModelName = "someName",
|
ModelName = "someName",
|
||||||
ModelState = new ModelStateDictionary(),
|
ModelState = new ModelStateDictionary(),
|
||||||
ValueProvider = valueProvider,
|
ValueProvider = valueProvider,
|
||||||
|
|
@ -431,6 +435,11 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding
|
||||||
public List<string> ListProperty { get; set; }
|
public List<string> ListProperty { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class ModelWithIListProperty
|
||||||
|
{
|
||||||
|
public IList<int> ListProperty { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
private class ModelWithSimpleProperties
|
private class ModelWithSimpleProperties
|
||||||
{
|
{
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
|
|
|
||||||
|
|
@ -472,7 +472,12 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Test
|
||||||
IDictionary<string, KeyValuePair<int, string>> values)
|
IDictionary<string, KeyValuePair<int, string>> values)
|
||||||
{
|
{
|
||||||
var metadataProvider = new TestModelMetadataProvider();
|
var metadataProvider = new TestModelMetadataProvider();
|
||||||
metadataProvider.ForType<IDictionary<int, string>>().BindingDetails(bd => bd.IsReadOnly = isReadOnly);
|
metadataProvider
|
||||||
|
.ForProperty<ModelWithIDictionaryProperty>(nameof(ModelWithIDictionaryProperty.DictionaryProperty))
|
||||||
|
.BindingDetails(bd => bd.IsReadOnly = isReadOnly);
|
||||||
|
var metadata = metadataProvider.GetMetadataForProperty(
|
||||||
|
typeof(ModelWithIDictionaryProperty),
|
||||||
|
nameof(ModelWithIDictionaryProperty.DictionaryProperty));
|
||||||
|
|
||||||
var binder = new StubModelBinder(mbc =>
|
var binder = new StubModelBinder(mbc =>
|
||||||
{
|
{
|
||||||
|
|
@ -491,7 +496,7 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Test
|
||||||
|
|
||||||
var bindingContext = new DefaultModelBindingContext
|
var bindingContext = new DefaultModelBindingContext
|
||||||
{
|
{
|
||||||
ModelMetadata = metadataProvider.GetMetadataForType(typeof(IDictionary<int, string>)),
|
ModelMetadata = metadata,
|
||||||
ModelName = "someName",
|
ModelName = "someName",
|
||||||
ModelState = new ModelStateDictionary(),
|
ModelState = new ModelStateDictionary(),
|
||||||
OperationBindingContext = new OperationBindingContext
|
OperationBindingContext = new OperationBindingContext
|
||||||
|
|
@ -507,6 +512,11 @@ namespace Microsoft.AspNetCore.Mvc.ModelBinding.Test
|
||||||
return bindingContext;
|
return bindingContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class ModelWithIDictionaryProperty
|
||||||
|
{
|
||||||
|
public IDictionary<int, string> DictionaryProperty { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
private class ModelWithDictionaryProperties
|
private class ModelWithDictionaryProperties
|
||||||
{
|
{
|
||||||
// A Dictionary<string, string> instance cannot be assigned to this property.
|
// A Dictionary<string, string> instance cannot be assigned to this property.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue