public void GetBinder_ModelMetadataReturnsReadOnly_ReturnsNull() { // Arrange ExtensibleModelBindingContext bindingContext = new ExtensibleModelBindingContext { ModelMetadata = new EmptyModelMetadataProvider().GetMetadataForType( null, typeof(int[]) ), ModelName = "foo", ValueProvider = new SimpleValueProvider { { "foo[0]", "42" }, } }; bindingContext.ModelMetadata.IsReadOnly = true; ArrayModelBinderProvider binderProvider = new ArrayModelBinderProvider(); // Act IExtensibleModelBinder binder = binderProvider.GetBinder(null, bindingContext); // Assert Assert.Null(binder); }
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_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_ForNonArrayTypes_ReturnsNull(Type modelType) { // Arrange var provider = new ArrayModelBinderProvider(); var context = new TestModelBinderProviderContext(modelType); // Act var result = provider.GetBinder(context); // Assert Assert.Null(result); }
public void Create_ForNonArrayTypes_ReturnsNull(Type modelType) { // Arrange var provider = new ArrayModelBinderProvider(); var context = new TestModelBinderProviderContext(modelType); // Act var result = provider.GetBinder(context); // Assert Assert.Null(result); }
public void GetBinder_ValueProviderDoesNotContainPrefix_ReturnsNull() { // Arrange ExtensibleModelBindingContext bindingContext = new ExtensibleModelBindingContext() { ModelMetadata = new EmptyModelMetadataProvider().GetMetadataForType(null, typeof(int[])), ModelName = "foo", ValueProvider = new SimpleValueProvider() }; ArrayModelBinderProvider binderProvider = new ArrayModelBinderProvider(); // Act IExtensibleModelBinder binder = binderProvider.GetBinder(null, bindingContext); // Assert Assert.IsNull(binder); }
public void GetBinder_ValueProviderDoesNotContainPrefix_ReturnsNull() { // Arrange ExtensibleModelBindingContext bindingContext = new ExtensibleModelBindingContext { ModelMetadata = new EmptyModelMetadataProvider().GetMetadataForType(null, typeof(int[])), ModelName = "foo", ValueProvider = new SimpleValueProvider() }; ArrayModelBinderProvider binderProvider = new ArrayModelBinderProvider(); // Act IExtensibleModelBinder binder = binderProvider.GetBinder(null, bindingContext); // Assert Assert.Null(binder); }
public void ModelBinderToString_With_CompositeModelBinder_Formats() { // Arrange ModelBinderProvider innerProvider1 = new SimpleModelBinderProvider(typeof(int), () => null); ModelBinderProvider innerProvider2 = new ArrayModelBinderProvider(); CompositeModelBinderProvider compositeProvider = new CompositeModelBinderProvider(new ModelBinderProvider[] { innerProvider1, innerProvider2 }); string expected = String.Format( "{0}({1}, {2})", typeof(CompositeModelBinderProvider).Name, typeof(SimpleModelBinderProvider).Name, typeof(ArrayModelBinderProvider).Name); // Act string actual = FormattingUtilities.ModelBinderToString(compositeProvider); // Assert Assert.Equal(expected, actual); }
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 GetBinder_ModelTypeIsIncorrect_ReturnsNull() { // Arrange ExtensibleModelBindingContext bindingContext = new ExtensibleModelBindingContext() { ModelMetadata = new EmptyModelMetadataProvider().GetMetadataForType(null, typeof(ICollection<int>)), ModelName = "foo", ValueProvider = new SimpleValueProvider() { { "foo[0]", "42" }, } }; ArrayModelBinderProvider binderProvider = new ArrayModelBinderProvider(); // Act IExtensibleModelBinder binder = binderProvider.GetBinder(null, bindingContext); // Assert Assert.IsNull(binder); }
public void GetBinder_CorrectModelTypeAndValueProviderEntries_ReturnsBinder() { // Arrange ExtensibleModelBindingContext bindingContext = new ExtensibleModelBindingContext() { ModelMetadata = new EmptyModelMetadataProvider().GetMetadataForType(null, typeof(int[])), ModelName = "foo", ValueProvider = new SimpleValueProvider() { { "foo[0]", "42" }, } }; ArrayModelBinderProvider binderProvider = new ArrayModelBinderProvider(); // Act IExtensibleModelBinder binder = binderProvider.GetBinder(null, bindingContext); // Assert Assert.IsInstanceOfType(binder, typeof(ArrayModelBinder<int>)); }
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 GetBinder_ModelMetadataReturnsReadOnly_ReturnsNull() { // Arrange ExtensibleModelBindingContext bindingContext = new ExtensibleModelBindingContext() { ModelMetadata = new EmptyModelMetadataProvider().GetMetadataForType(null, typeof(int[])), ModelName = "foo", ValueProvider = new SimpleValueProvider() { { "foo[0]", "42" }, } }; bindingContext.ModelMetadata.IsReadOnly = true; ArrayModelBinderProvider binderProvider = new ArrayModelBinderProvider(); // Act IExtensibleModelBinder binder = binderProvider.GetBinder(null, bindingContext); // Assert Assert.IsNull(binder); }
public void GetBinder_ModelTypeIsIncorrect_ReturnsNull() { // Arrange ExtensibleModelBindingContext bindingContext = new ExtensibleModelBindingContext { ModelMetadata = new EmptyModelMetadataProvider().GetMetadataForType(null, typeof(ICollection <int>)), ModelName = "foo", ValueProvider = new SimpleValueProvider { { "foo[0]", "42" }, } }; ArrayModelBinderProvider binderProvider = new ArrayModelBinderProvider(); // Act IExtensibleModelBinder binder = binderProvider.GetBinder(null, bindingContext); // Assert Assert.Null(binder); }
public void GetBinder_CorrectModelTypeAndValueProviderEntries_ReturnsBinder() { // Arrange ExtensibleModelBindingContext bindingContext = new ExtensibleModelBindingContext { ModelMetadata = new EmptyModelMetadataProvider().GetMetadataForType(null, typeof(int[])), ModelName = "foo", ValueProvider = new SimpleValueProvider { { "foo[0]", "42" }, } }; ArrayModelBinderProvider binderProvider = new ArrayModelBinderProvider(); // Act IExtensibleModelBinder binder = binderProvider.GetBinder(null, bindingContext); // Assert Assert.IsType <ArrayModelBinder <int> >(binder); }
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); }