public void CreateActivator_TypeActivatesModelType() { // Arrange var activatorProvider = new DefaultPageModelActivatorProvider(); var actionDescriptor = new CompiledPageActionDescriptor { ModelTypeInfo = typeof(ModelWithServices).GetTypeInfo(), }; var serviceCollection = new ServiceCollection(); var generator = Mock.Of <IHtmlGenerator>(); serviceCollection.AddSingleton(generator); var httpContext = new DefaultHttpContext { RequestServices = serviceCollection.BuildServiceProvider(), }; var pageContext = new PageContext { HttpContext = httpContext }; // Act var activator = activatorProvider.CreateActivator(actionDescriptor); var model = activator(pageContext); // Assert var modelWithServices = Assert.IsType <ModelWithServices>(model); Assert.Same(generator, modelWithServices.Generator); }
public void CreateActivator_ThrowsIfModelTypeInfoOnActionDescriptorIsNull() { // Arrange var activatorProvider = new DefaultPageModelActivatorProvider(); var actionDescriptor = new CompiledPageActionDescriptor(); // Act & Assert ExceptionAssert.ThrowsArgument( () => activatorProvider.CreateActivator(actionDescriptor), "actionDescriptor", "The 'ModelTypeInfo' property of 'actionDescriptor' must not be null."); }
public void CreateReleaser_ReturnsNullForModelsThatDoNotImplementDisposable(Type pageType) { // Arrange var context = new PageContext(); var activator = new DefaultPageModelActivatorProvider(); var actionDescriptor = new CompiledPageActionDescriptor { PageTypeInfo = pageType.GetTypeInfo(), }; // Act var releaser = activator.CreateReleaser(actionDescriptor); // Assert Assert.Null(releaser); }
public async Task CreateAsyncReleaser_CreatesDelegateThatDisposesAsyncDisposableTypes() { // Arrange var context = new PageContext(); var viewContext = new ViewContext(); var activator = new DefaultPageModelActivatorProvider(); var model = new AsyncDisposableModel(); // Act & Assert var disposer = activator.CreateAsyncReleaser(new CompiledPageActionDescriptor { ModelTypeInfo = model.GetType().GetTypeInfo() }); Assert.NotNull(disposer); await disposer(context, model); // Assert Assert.True(model.Disposed); }
public void CreateReleaser_CreatesDelegateThatDisposesDisposableTypes() { // Arrange var context = new PageContext(); var activator = new DefaultPageModelActivatorProvider(); var actionDescriptor = new CompiledPageActionDescriptor { ModelTypeInfo = typeof(DisposableModel).GetTypeInfo(), }; var model = new DisposableModel(); // Act & Assert var releaser = activator.CreateReleaser(actionDescriptor); releaser(context, model); // Assert Assert.True(model.Disposed); }