コード例 #1
0
        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);
        }
コード例 #2
0
        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.");
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }