public void BindModel_Error_FormatExceptionsTurnedIntoStringsInModelState_ErrorNotAddedIfCallbackReturnsNull() { // Arrange ModelBindingContext bindingContext = GetBindingContext(typeof(int)); bindingContext.ValueProvider = new SimpleHttpValueProvider { { "theModelName", "not an integer" } }; TypeConverterModelBinder binder = new TypeConverterModelBinder(); // Act ModelBinderErrorMessageProvider originalProvider = ModelBinderConfig.TypeConversionErrorMessageProvider; bool retVal; try { ModelBinderConfig.TypeConversionErrorMessageProvider = delegate { return null; }; retVal = binder.BindModel(null, bindingContext); } finally { ModelBinderConfig.TypeConversionErrorMessageProvider = originalProvider; } // Assert Assert.False(retVal); Assert.Null(bindingContext.Model); Assert.True(bindingContext.ModelState.IsValid); }
public void BindModel_Error_FormatExceptionsTurnedIntoStringsInModelState() { // Arrange ModelBindingContext bindingContext = GetBindingContext(typeof(int)); bindingContext.ValueProvider = new SimpleHttpValueProvider { { "theModelName", "not an integer" } }; TypeConverterModelBinder binder = new TypeConverterModelBinder(); // Act bool retVal = binder.BindModel(null, bindingContext); // Assert Assert.False(retVal); Assert.Equal("The value 'not an integer' is not valid for Int32.", bindingContext.ModelState["theModelName"].Errors[0].ErrorMessage); }
public void BindModel_Error_GeneralExceptionsSavedInModelState() { // Arrange ModelBindingContext bindingContext = GetBindingContext(typeof(Dummy)); bindingContext.ValueProvider = new SimpleHttpValueProvider { { "theModelName", "foo" } }; TypeConverterModelBinder binder = new TypeConverterModelBinder(); // Act bool retVal = binder.BindModel(null, bindingContext); // Assert Assert.False(retVal); Assert.Null(bindingContext.Model); Assert.Equal("The parameter conversion from type 'System.String' to type 'System.Web.Http.ModelBinding.Binders.TypeConverterModelBinderTest+Dummy' failed. See the inner exception for more information.", bindingContext.ModelState["theModelName"].Errors[0].Exception.Message); Assert.Equal("From DummyTypeConverter: foo", bindingContext.ModelState["theModelName"].Errors[0].Exception.InnerException.Message); }
public void BindModel_Error_FormatExceptionsTurnedIntoStringsInModelState() { // Arrange ModelBindingContext bindingContext = GetBindingContext(typeof(int)); bindingContext.ValueProvider = new SimpleHttpValueProvider { { "theModelName", "not an integer" } }; TypeConverterModelBinder binder = new TypeConverterModelBinder(); // Act bool retVal = binder.BindModel(null, bindingContext); // Assert Assert.False(retVal); Assert.Equal( "The value 'not an integer' is not valid for Int32.", bindingContext.ModelState["theModelName"].Errors[0].ErrorMessage ); }
public void BindModel_NullValueProviderResult_ReturnsFalse() { // Arrange ModelBindingContext bindingContext = GetBindingContext(typeof(int)); TypeConverterModelBinder binder = new TypeConverterModelBinder(); // Act bool retVal = binder.BindModel(null, bindingContext); // Assert Assert.False(retVal, "BindModel should have returned null."); Assert.Empty(bindingContext.ModelState); }
public void BindModel_ValidValueProviderResult_ReturnsModel() { // Arrange ModelBindingContext bindingContext = GetBindingContext(typeof(int)); bindingContext.ValueProvider = new SimpleHttpValueProvider { { "theModelName", "42" } }; TypeConverterModelBinder binder = new TypeConverterModelBinder(); // Act bool retVal = binder.BindModel(null, bindingContext); // Assert Assert.True(retVal); Assert.Equal(42, bindingContext.Model); Assert.True(bindingContext.ModelState.ContainsKey("theModelName")); }
public void BindModel_ValidValueProviderResult_ConvertEmptyStringsToNull() { // Arrange ModelBindingContext bindingContext = GetBindingContext(typeof(string)); bindingContext.ValueProvider = new SimpleHttpValueProvider { { "theModelName", "" } }; TypeConverterModelBinder binder = new TypeConverterModelBinder(); // Act bool retVal = binder.BindModel(null, bindingContext); // Assert Assert.True(retVal); Assert.Null(bindingContext.Model); Assert.True(bindingContext.ModelState.ContainsKey("theModelName")); }