public void Create_ThrowsIfModelIsNotRegisteredInServiceProvider() { // Arrange var expected = "No service for type '" + typeof(DISimpleModel) + "' has been registered."; var model = new DISimpleModel(); var httpContext = new DefaultHttpContext { RequestServices = Mock.Of <IServiceProvider>() }; var activatorProvider = new ServiceBasedPageModelActivatorProvider(); var context = new PageContext { HttpContext = httpContext, ActionDescriptor = new CompiledPageActionDescriptor { ModelTypeInfo = typeof(DISimpleModel).GetTypeInfo(), } }; // Act and Assert var activator = activatorProvider.CreateActivator(context.ActionDescriptor); var ex = Assert.Throws <InvalidOperationException>( () => activator(context)); Assert.Equal(expected, ex.Message); }
public void CreateActivator_CreatesModelInstance() { // Arrange var simpleModel = new DISimpleModel(); var serviceProvider = new Mock <IServiceProvider>(MockBehavior.Strict); serviceProvider.Setup(s => s.GetService(typeof(DISimpleModel))) .Returns(simpleModel) .Verifiable(); var activatorProvider = new ServiceBasedPageModelActivatorProvider(); var pageContext = new PageContext { HttpContext = new DefaultHttpContext { RequestServices = serviceProvider.Object, }, ActionDescriptor = new CompiledPageActionDescriptor { ModelTypeInfo = typeof(DISimpleModel).GetTypeInfo(), } }; // Act var activator = activatorProvider.CreateActivator(pageContext.ActionDescriptor); var model = activator(pageContext); // Assert var simpleModel2 = Assert.IsType <DISimpleModel>(model); Assert.NotNull(simpleModel2); }
public void Create_GetsServicesFromServiceProvider() { // Arrange var simpleModel = new DISimpleModel(); var serviceProvider = new Mock <IServiceProvider>(MockBehavior.Strict); serviceProvider.Setup(s => s.GetService(typeof(DISimpleModel))) .Returns(simpleModel) .Verifiable(); var activatorProvider = new ServiceBasedPageModelActivatorProvider(); var pageContext = new PageContext { HttpContext = new DefaultHttpContext { RequestServices = serviceProvider.Object, }, ActionDescriptor = new CompiledPageActionDescriptor { ModelTypeInfo = typeof(DISimpleModel).GetTypeInfo(), } }; // Act var activator = activatorProvider.CreateActivator(pageContext.ActionDescriptor); var instance = activator(pageContext); // Assert Assert.Same(simpleModel, instance); serviceProvider.Verify(); }
public void CreateActivator_ThrowsIfModelTypeInfoOnActionDescriptorIsNull() { // Arrange var activatorProvider = new ServiceBasedPageModelActivatorProvider(); var descriptor = new CompiledPageActionDescriptor(); // Act & Assert ExceptionAssert.ThrowsArgument( () => activatorProvider.CreateActivator(descriptor), "descriptor", "The 'ModelTypeInfo' property of 'descriptor' must not be null."); }
public void CreateReleaser_ReturnsNullForPageModels(Type pageType) { // Arrange var context = new PageContext(); var activator = new ServiceBasedPageModelActivatorProvider(); var actionDescriptor = new CompiledPageActionDescriptor { PageTypeInfo = pageType.GetTypeInfo(), }; // Act var releaser = activator.CreateReleaser(actionDescriptor); // Assert Assert.Null(releaser); }