public void BindModel_MissingValue_ReturnsTrue() { // Arrange Mock <IModelBinder> mockIntBinder = new Mock <IModelBinder>(); ModelBindingContext bindingContext = new ModelBindingContext { ModelMetadata = new EmptyModelMetadataProvider().GetMetadataForType(null, typeof(KeyValuePair <int, string>)), ModelName = "someName", ValueProvider = new SimpleHttpValueProvider() }; HttpActionContext context = ContextUtil.CreateActionContext(); context.ControllerContext.Configuration.Services.Replace(typeof(ModelBinderProvider), new SimpleModelBinderProvider(typeof(int), mockIntBinder.Object) { SuppressPrefixCheck = true }); mockIntBinder .Setup(o => o.BindModel(context, It.IsAny <ModelBindingContext>())) .Returns((HttpActionContext cc, ModelBindingContext mbc) => { mbc.Model = 42; return(true); }); KeyValuePairModelBinder <int, string> binder = new KeyValuePairModelBinder <int, string>(); // Act bool retVal = binder.BindModel(context, bindingContext); // Assert Assert.True(retVal); Assert.Null(bindingContext.Model); Assert.Equal(new[] { "someName.key" }, bindingContext.ValidationNode.ChildNodes.Select(n => n.ModelStateKey).ToArray()); }
public void BindModel_MissingKey_ReturnsFalse() { // Arrange KeyValuePairModelBinder <int, string> binder = new KeyValuePairModelBinder <int, string>(); ModelBindingContext bindingContext = new ModelBindingContext { ModelMetadata = new EmptyModelMetadataProvider().GetMetadataForType( null, typeof(KeyValuePair <int, string>) ), ModelName = "someName", ValueProvider = new SimpleHttpValueProvider() }; HttpActionContext context = ContextUtil.CreateActionContext(); context.ControllerContext.Configuration.Services.Replace( typeof(ModelBinderProvider), new SimpleModelBinderProvider(typeof(KeyValuePair <int, string>), binder) ); // Act bool retVal = binder.BindModel(context, bindingContext); // Assert Assert.False(retVal); Assert.Null(bindingContext.Model); Assert.Empty(bindingContext.ValidationNode.ChildNodes); }