public async Task BindModel_NullValueProviderResult_ReturnsNull() { // Arrange var bindingContext = GetBindingContext(typeof(int)); var binder = new SimpleTypeModelBinder(); // Act var result = await binder.BindModelResultAsync(bindingContext); // Assert Assert.Equal(default(ModelBindingResult), result); Assert.Empty(bindingContext.ModelState); }
public async Task BindModel_ReturnsNothing_IfTypeCannotBeConverted(Type destinationType) { // Arrange var bindingContext = GetBindingContext(destinationType); bindingContext.ValueProvider = new SimpleValueProvider { { "theModelName", "some-value" } }; var binder = new SimpleTypeModelBinder(); // Act var result = await binder.BindModelResultAsync(bindingContext); // Assert Assert.Equal(default(ModelBindingResult), result); }
public async Task BindModel_ReturnsFailure_IfTypeCanBeConverted_AndConversionFails(Type destinationType) { // Arrange var bindingContext = GetBindingContext(destinationType); bindingContext.ValueProvider = new SimpleValueProvider { { "theModelName", "some-value" } }; var binder = new SimpleTypeModelBinder(); // Act var result = await binder.BindModelResultAsync(bindingContext); // Assert Assert.NotEqual(default(ModelBindingResult), result); Assert.False(result.IsModelSet); }
public async Task BindModel_ValidValueProviderResult_ConvertEmptyStringsToNull() { // Arrange var bindingContext = GetBindingContext(typeof(string)); bindingContext.ValueProvider = new SimpleValueProvider { { "theModelName", string.Empty } }; var binder = new SimpleTypeModelBinder(); // Act var result = await binder.BindModelResultAsync(bindingContext); // Assert Assert.Null(result.Model); Assert.True(bindingContext.ModelState.ContainsKey("theModelName")); }
public async Task BindModel_ValidValueProviderResult_ReturnsModel() { // Arrange var bindingContext = GetBindingContext(typeof(int)); bindingContext.ValueProvider = new SimpleValueProvider { { "theModelName", "42" } }; var binder = new SimpleTypeModelBinder(); // Act var result = await binder.BindModelResultAsync(bindingContext); // Assert Assert.True(result.IsModelSet); Assert.Equal(42, result.Model); Assert.True(bindingContext.ModelState.ContainsKey("theModelName")); }
public async Task BindModel_BindsFlagsEnumModels(string flagsEnumValue, int expected) { // Arrange var bindingContext = GetBindingContext(typeof(FlagsEnum)); bindingContext.ValueProvider = new SimpleValueProvider { { "theModelName", flagsEnumValue } }; var binder = new SimpleTypeModelBinder(); // Act var result = await binder.BindModelResultAsync(bindingContext); // Assert Assert.True(result.IsModelSet); var boundModel = Assert.IsType <FlagsEnum>(result.Model); Assert.Equal((FlagsEnum)expected, boundModel); }
public async Task BindModel_CreatesError_WhenTypeConversionIsNull(Type destinationType) { // Arrange var bindingContext = GetBindingContext(destinationType); bindingContext.ValueProvider = new SimpleValueProvider { { "theModelName", string.Empty } }; var binder = new SimpleTypeModelBinder(); // Act var result = await binder.BindModelResultAsync(bindingContext); // Assert Assert.False(result.IsModelSet); Assert.Null(result.Model); var error = Assert.Single(bindingContext.ModelState["theModelName"].Errors); Assert.Equal("The value '' is invalid.", error.ErrorMessage, StringComparer.Ordinal); Assert.Null(error.Exception); }
public async Task BindModel_Error_FormatExceptionsTurnedIntoStringsInModelState() { // Arrange var message = "The value 'not an integer' is not valid for Int32."; var bindingContext = GetBindingContext(typeof(int)); bindingContext.ValueProvider = new SimpleValueProvider { { "theModelName", "not an integer" } }; var binder = new SimpleTypeModelBinder(); // Act var result = await binder.BindModelResultAsync(bindingContext); // Assert Assert.NotEqual(default(ModelBindingResult), result); Assert.Null(result.Model); Assert.False(bindingContext.ModelState.IsValid); var error = Assert.Single(bindingContext.ModelState["theModelName"].Errors); Assert.Equal(message, error.ErrorMessage); }