public void CreateAsyncReleaser_ReturnsNullForModelsThatDoNotImplementDisposable(Type pageType)
        {
            // Arrange
            var context          = new PageContext();
            var activator        = new DefaultPageModelActivatorProvider();
            var actionDescriptor = new CompiledPageActionDescriptor
            {
                PageTypeInfo = pageType.GetTypeInfo(),
            };

            // Act
            var releaser = activator.CreateAsyncReleaser(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);
        }