public async Task BindModel_SimpleCollection_Succeeds(bool isReadOnly) { // Arrange var valueProvider = new SimpleValueProvider { { "someName", new[] { "42", "100", "200" } } }; var bindingContext = GetModelBindingContext(valueProvider, isReadOnly); var modelState = bindingContext.ModelState; var binder = new CollectionModelBinder <int>(); // Act var result = await binder.BindModelResultAsync(bindingContext); // Assert Assert.NotEqual(default(ModelBindingResult), result); Assert.True(result.IsModelSet); var list = Assert.IsAssignableFrom <IList <int> >(result.Model); Assert.Equal(new[] { 42, 100, 200 }, list.ToArray()); }
public async Task BindModelAsync_SimpleCollectionWithNullValue_Succeeds() { // Arrange var binder = new CollectionModelBinder <int>(); var valueProvider = new SimpleValueProvider { { "someName", null }, }; var bindingContext = GetModelBindingContext(valueProvider, isReadOnly: false); var modelState = bindingContext.ModelState; // Act var result = await binder.BindModelResultAsync(bindingContext); // Assert Assert.NotEqual(default(ModelBindingResult), result); Assert.True(result.IsModelSet); Assert.NotNull(result.Model); var model = Assert.IsType <List <int> >(result.Model); Assert.Empty(model); }
public async Task BindComplexCollectionFromIndexes_FiniteIndexes() { // Arrange var valueProvider = new SimpleValueProvider { { "someName[foo]", "42" }, { "someName[baz]", "200" } }; var bindingContext = GetModelBindingContext(valueProvider); var binder = new CollectionModelBinder <int>(); // Act var collectionResult = await binder.BindComplexCollectionFromIndexes( bindingContext, new[] { "foo", "bar", "baz" }); // Assert Assert.Equal(new[] { 42, 0, 200 }, collectionResult.Model.ToArray()); // This requires a non-default IValidationStrategy var strategy = Assert.IsType <ExplicitIndexCollectionValidationStrategy>(collectionResult.ValidationStrategy); Assert.Equal(new[] { "foo", "bar", "baz" }, strategy.ElementKeys); }