public void Create_ForModelMetadataReadOnly_ReturnsNull() { // Arrange var metadataProvider = new TestModelMetadataProvider(); metadataProvider.ForProperty( typeof(ModelWithIntArrayProperty), nameof(ModelWithIntArrayProperty.ArrayProperty)).BindingDetails(bd => bd.IsReadOnly = true); var modelMetadata = metadataProvider.GetMetadataForProperty( typeof(ModelWithIntArrayProperty), nameof(ModelWithIntArrayProperty.ArrayProperty)); var provider = new ArrayModelBinderProvider(); var context = new TestModelBinderProviderContext(typeof(int[])); context.OnCreatingBinder((m) => { // Expect to be called with the element type to create a binder for elements. Assert.Equal(typeof(int), m.ModelType); return(Mock.Of <IModelBinder>()); }); // Act var result = provider.GetBinder(context); // Assert Assert.IsType <ArrayModelBinder <int> >(result); }
public void Create_ForDictionaryType_ReturnsBinder(Type modelType) { // Arrange var provider = new DictionaryModelBinderProvider(); var context = new TestModelBinderProviderContext(modelType); context.OnCreatingBinder(m => { if (m.ModelType == typeof(KeyValuePair <string, int>) || m.ModelType == typeof(int) || m.ModelType == typeof(string)) { return(Mock.Of <IModelBinder>()); } else { Assert.False(true, "Not the right model type"); return(null); } }); // Act var result = provider.GetBinder(context); // Assert var binder = Assert.IsType <DictionaryModelBinder <string, int> >(result); Assert.False(binder.AllowValidatingTopLevelNodes); // work done in DictionaryModelBinder. }
public void Create_ForSupportedType_ReturnsBinder() { // Arrange var provider = new ComplexTypeModelBinderProvider(); var context = new TestModelBinderProviderContext(typeof(Person)); context.OnCreatingBinder(m => { if (m.ModelType == typeof(int) || m.ModelType == typeof(string)) { return(Mock.Of <IModelBinder>()); } else { Assert.False(true, "Not the right model type"); return(null); } }); // Act var result = provider.GetBinder(context); // Assert Assert.IsType <ComplexTypeModelBinder>(result); }
public void Create_ForKeyValuePair_ReturnsBinder() { // Arrange var provider = new KeyValuePairModelBinderProvider(); var context = new TestModelBinderProviderContext(typeof(KeyValuePair <string, int>)); context.OnCreatingBinder(m => { if (m.ModelType == typeof(string) || m.ModelType == typeof(int)) { return(Mock.Of <IModelBinder>()); } else { Assert.False(true, "Not the right model type"); return(null); } }); // Act var result = provider.GetBinder(context); // Assert Assert.IsType <KeyValuePairModelBinder <string, int> >(result); }
public void Create_ForSupportedTypes_ReturnsBinder() { // Arrange var provider = new ComplexTypeModelBinderProvider(); var context = new TestModelBinderProviderContext(typeof(Person)); context.OnCreatingBinder(m => { if (m.ModelType == typeof(int) || m.ModelType == typeof(string)) { return Mock.Of<IModelBinder>(); } else { Assert.False(true, "Not the right model type"); return null; } }); // Act var result = provider.GetBinder(context); // Assert Assert.IsType<ComplexTypeModelBinder>(result); }
public void Create_ForModelMetadataReadOnly_ReturnsNull() { // Arrange var metadataProvider = new TestModelMetadataProvider(); metadataProvider.ForProperty( typeof(ModelWithIntArrayProperty), nameof(ModelWithIntArrayProperty.ArrayProperty)).BindingDetails(bd => bd.IsReadOnly = true); var modelMetadata = metadataProvider.GetMetadataForProperty( typeof(ModelWithIntArrayProperty), nameof(ModelWithIntArrayProperty.ArrayProperty)); var provider = new ArrayModelBinderProvider(); var context = new TestModelBinderProviderContext(typeof(int[])); context.OnCreatingBinder((m) => { // Expect to be called with the element type to create a binder for elements. Assert.Equal(typeof(int), m.ModelType); return Mock.Of<IModelBinder>(); }); // Act var result = provider.GetBinder(context); // Assert Assert.IsType<ArrayModelBinder<int>>(result); }
public void Create_ForSupportedType_ReturnsBinder_WithExpectedAllowValidatingTopLevelNodes( bool allowValidatingTopLevelNodes) { // Arrange var provider = new ComplexTypeModelBinderProvider(); var context = new TestModelBinderProviderContext(typeof(Person)); context.MvcOptions.AllowValidatingTopLevelNodes = allowValidatingTopLevelNodes; context.OnCreatingBinder(m => { if (m.ModelType == typeof(int) || m.ModelType == typeof(string)) { return(Mock.Of <IModelBinder>()); } else { Assert.False(true, "Not the right model type"); return(null); } }); // Act var result = provider.GetBinder(context); // Assert var binder = Assert.IsType <ComplexTypeModelBinder>(result); Assert.Equal(allowValidatingTopLevelNodes, binder.AllowValidatingTopLevelNodes); }
public void Create_ForDictionaryType_ReturnsBinder_WithExpectedAllowValidatingTopLevelNodes( bool allowValidatingTopLevelNodes) { // Arrange var provider = new DictionaryModelBinderProvider(); var context = new TestModelBinderProviderContext(typeof(Dictionary <string, string>)); context.MvcOptions.AllowValidatingTopLevelNodes = allowValidatingTopLevelNodes; context.OnCreatingBinder(m => { if (m.ModelType == typeof(KeyValuePair <string, string>) || m.ModelType == typeof(string)) { return(Mock.Of <IModelBinder>()); } else { Assert.False(true, "Not the right model type"); return(null); } }); // Act var result = provider.GetBinder(context); // Assert var binder = Assert.IsType <DictionaryModelBinder <string, string> >(result); Assert.Equal(allowValidatingTopLevelNodes, binder.AllowValidatingTopLevelNodes); Assert.False(((CollectionModelBinder <KeyValuePair <string, string> >)binder).AllowValidatingTopLevelNodes); }
public void Create_ForDictionaryType_ReturnsBinder(Type modelType) { // Arrange var provider = new DictionaryModelBinderProvider(); var context = new TestModelBinderProviderContext(modelType); context.OnCreatingBinder(m => { if (m.ModelType == typeof(KeyValuePair<string, int>) || m.ModelType == typeof(int) || m.ModelType == typeof(string)) { return Mock.Of<IModelBinder>(); } else { Assert.False(true, "Not the right model type"); return null; } }); // Act var result = provider.GetBinder(context); // Assert Assert.IsType<DictionaryModelBinder<string, int>>(result); }
public void Create_ForArrayTypes_ReturnsBinder(Type modelType) { // Arrange var provider = new ArrayModelBinderProvider(); var context = new TestModelBinderProviderContext(modelType); context.OnCreatingBinder((m) => { // Expect to be called with the element type to create a binder for elements. Assert.Equal(modelType.GetElementType(), m.ModelType); return Mock.Of<IModelBinder>(); }); // Act var result = provider.GetBinder(context); // Assert Assert.IsType(typeof(ArrayModelBinder<>).MakeGenericType(modelType.GetElementType()), result); }
public void Create_ForArrayTypes_ReturnsBinder(Type modelType) { // Arrange var provider = new ArrayModelBinderProvider(); var context = new TestModelBinderProviderContext(modelType); context.OnCreatingBinder((m) => { // Expect to be called with the element type to create a binder for elements. Assert.Equal(modelType.GetElementType(), m.ModelType); return(Mock.Of <IModelBinder>()); }); // Act var result = provider.GetBinder(context); // Assert Assert.IsType(typeof(ArrayModelBinder <>).MakeGenericType(modelType.GetElementType()), result); }
public void Create_ForArrayType_ReturnsBinder() { // Arrange var provider = new ArrayModelBinderProvider(); var context = new TestModelBinderProviderContext(typeof(int[])); context.OnCreatingBinder(m => { Assert.Equal(typeof(int), m.ModelType); return(Mock.Of <IModelBinder>()); }); // Act var result = provider.GetBinder(context); // Assert var binder = Assert.IsType <ArrayModelBinder <int> >(result); Assert.True(binder.AllowValidatingTopLevelNodes); }
public void Create_ForSupportedTypes_ReturnsBinder(Type modelType) { // Arrange var provider = new CollectionModelBinderProvider(); var context = new TestModelBinderProviderContext(modelType); Type elementType = null; context.OnCreatingBinder(m => { Assert.Equal(typeof(int), m.ModelType); elementType = m.ModelType; return(Mock.Of <IModelBinder>()); }); // Act var result = provider.GetBinder(context); // Assert Assert.NotNull(elementType); Assert.IsType <CollectionModelBinder <int> >(result); }
public void Create_ForSupportedType_ReturnsBinder_WithExpectedAllowValidatingTopLevelNodes( bool allowValidatingTopLevelNodes) { // Arrange var provider = new CollectionModelBinderProvider(); var context = new TestModelBinderProviderContext(typeof(List <int>)); context.MvcOptions.AllowValidatingTopLevelNodes = allowValidatingTopLevelNodes; context.OnCreatingBinder(m => { Assert.Equal(typeof(int), m.ModelType); return(Mock.Of <IModelBinder>()); }); // Act var result = provider.GetBinder(context); // Assert var binder = Assert.IsType <CollectionModelBinder <int> >(result); Assert.Equal(allowValidatingTopLevelNodes, binder.AllowValidatingTopLevelNodes); }
public void Create_ForSupportedTypes_ReturnsBinder(Type modelType) { // Arrange var provider = new CollectionModelBinderProvider(); var context = new TestModelBinderProviderContext(modelType); Type elementType = null; context.OnCreatingBinder(m => { Assert.Equal(typeof(int), m.ModelType); elementType = m.ModelType; return Mock.Of<IModelBinder>(); }); // Act var result = provider.GetBinder(context); // Assert Assert.NotNull(elementType); Assert.IsType<CollectionModelBinder<int>>(result); }