PR Comments
This commit is contained in:
parent
86fcacea92
commit
4df7d52210
|
|
@ -318,7 +318,7 @@ namespace Microsoft.AspNet.Mvc.Core.Test
|
||||||
|
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task BindActionArgumentsAsync_SetsControllerProperties()
|
public async Task BindActionArgumentsAsync_SetsControllerProperties_ForReferenceTypes()
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var actionDescriptor = GetActionDescriptor();
|
var actionDescriptor = GetActionDescriptor();
|
||||||
|
|
@ -351,8 +351,8 @@ namespace Microsoft.AspNet.Mvc.Core.Test
|
||||||
actionDescriptor.BoundProperties.Add(
|
actionDescriptor.BoundProperties.Add(
|
||||||
new ParameterDescriptor
|
new ParameterDescriptor
|
||||||
{
|
{
|
||||||
Name = "ValueBinderMarkedProperty",
|
Name = "NotNullableProperty",
|
||||||
BindingInfo = new BindingInfo(),
|
BindingInfo = new BindingInfo() { BindingSource = BindingSource.Custom },
|
||||||
ParameterType = typeof(int)
|
ParameterType = typeof(int)
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -381,6 +381,44 @@ namespace Microsoft.AspNet.Mvc.Core.Test
|
||||||
Assert.Equal(-1, controller.NotNullableProperty);
|
Assert.Equal(-1, controller.NotNullableProperty);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public async Task BindActionArgumentsAsync_SetsNullValues_ForNullableProperties()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var actionDescriptor = GetActionDescriptor();
|
||||||
|
actionDescriptor.BoundProperties.Add(
|
||||||
|
new ParameterDescriptor
|
||||||
|
{
|
||||||
|
Name = "NullableProperty",
|
||||||
|
BindingInfo = new BindingInfo() { BindingSource = BindingSource.Custom },
|
||||||
|
ParameterType = typeof(int?)
|
||||||
|
});
|
||||||
|
|
||||||
|
var actionContext = GetActionContext(actionDescriptor);
|
||||||
|
|
||||||
|
var binder = new Mock<IModelBinder>();
|
||||||
|
binder
|
||||||
|
.Setup(b => b.BindModelAsync(It.IsAny<ModelBindingContext>()))
|
||||||
|
.Returns(Task.FromResult(
|
||||||
|
result: new ModelBindingResult(model: null, key: string.Empty, isModelSet: true)));
|
||||||
|
var actionBindingContext = new ActionBindingContext()
|
||||||
|
{
|
||||||
|
ModelBinder = binder.Object,
|
||||||
|
};
|
||||||
|
|
||||||
|
var argumentBinder = GetArgumentBinder();
|
||||||
|
var controller = new TestController();
|
||||||
|
|
||||||
|
// Some non default value.
|
||||||
|
controller.NullableProperty = -1;
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = await argumentBinder.BindActionArgumentsAsync(actionContext, actionBindingContext, controller);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.Null(controller.NullableProperty);
|
||||||
|
}
|
||||||
|
|
||||||
private static ActionContext GetActionContext(ActionDescriptor descriptor = null)
|
private static ActionContext GetActionContext(ActionDescriptor descriptor = null)
|
||||||
{
|
{
|
||||||
return new ActionContext(
|
return new ActionContext(
|
||||||
|
|
@ -441,6 +479,9 @@ namespace Microsoft.AspNet.Mvc.Core.Test
|
||||||
[CustomBindingSource]
|
[CustomBindingSource]
|
||||||
public int NotNullableProperty { get; set; }
|
public int NotNullableProperty { get; set; }
|
||||||
|
|
||||||
|
[CustomBindingSource]
|
||||||
|
public int? NullableProperty { get; set; }
|
||||||
|
|
||||||
public Person ActionWithBodyParam([FromBody] Person bodyParam)
|
public Person ActionWithBodyParam([FromBody] Person bodyParam)
|
||||||
{
|
{
|
||||||
return bodyParam;
|
return bodyParam;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue