public async Task BindModel_CallsBindAsync_OnProvidedModelBinderProvider() { // Arrange var bindingContext = GetBindingContext(typeof(Person)); bindingContext.ModelMetadata.BinderType = typeof(ModelBinderProvider); var model = new Person(); var innerModelBinder = new TrueModelBinder(model); var provider = new ModelBinderProvider(innerModelBinder); var mockITypeActivator = new Mock <ITypeActivator>(); mockITypeActivator .Setup(o => o.CreateInstance(It.IsAny <IServiceProvider>(), typeof(ModelBinderProvider))) .Returns(provider); var binder = new BinderTypeBasedModelBinder(mockITypeActivator.Object); // Act var binderResult = await binder.BindModelAsync(bindingContext); // Assert Assert.True(binderResult); Assert.Same(model, bindingContext.Model); }
public async Task BindModel_CallsBindAsync_OnProvidedModelBinder() { // Arrange var bindingContext = GetBindingContext(typeof(Person), binderType: typeof(TrueModelBinder)); var model = new Person(); var innerModelBinder = new TrueModelBinder(); var serviceProvider = new ServiceCollection() .AddSingleton(typeof(IModelBinder)) .BuildServiceProvider(); bindingContext.OperationBindingContext.HttpContext.RequestServices = serviceProvider; var binder = new BinderTypeBasedModelBinder(); // Act var binderResult = await binder.BindModelAsync(bindingContext); // Assert var p = (Person)binderResult.Model; Assert.Equal(model.Age, p.Age); Assert.Equal(model.Name, p.Name); }
public ModelBinderProvider() { var innerModelBinder = new TrueModelBinder(); _inner = innerModelBinder; }