コード例 #1
0
    public void CreateActivator_ThrowsIfPageTypeInfoIsNull()
    {
        // Arrange
        var descriptor = new CompiledPageActionDescriptor();
        var activator  = new DefaultPageActivatorProvider();

        // Act & Assert
        ExceptionAssert.ThrowsArgument(
            () => activator.CreateActivator(descriptor),
            "actionDescriptor",
            "The 'PageTypeInfo' property of 'actionDescriptor' must not be null.");
    }
コード例 #2
0
    public void CreateActivator_ThrowsIfTypeDoesNotHaveParameterlessConstructor()
    {
        // Arrange
        var descriptor = new CompiledPageActionDescriptor
        {
            PageTypeInfo = typeof(PageWithoutParameterlessConstructor).GetTypeInfo(),
        };
        var pageContext = new PageContext();
        var activator   = new DefaultPageActivatorProvider();

        // Act & Assert
        Assert.Throws <ArgumentException>(() => activator.CreateActivator(descriptor));
    }
コード例 #3
0
    public void CreateAsyncReleaser_ReturnsNullForPagesThatDoNotImplementDisposable(Type pageType)
    {
        // Arrange
        var context   = new PageContext();
        var activator = new DefaultPageActivatorProvider();
        var page      = new TestPage();

        // Act
        var releaser = activator.CreateAsyncReleaser(new CompiledPageActionDescriptor
        {
            PageTypeInfo = pageType.GetTypeInfo()
        });

        // Assert
        Assert.Null(releaser);
    }
コード例 #4
0
    public async Task CreateAsyncReleaser_CreatesDelegateThatDisposesAsyncDisposableTypes()
    {
        // Arrange
        var context     = new PageContext();
        var viewContext = new ViewContext();
        var activator   = new DefaultPageActivatorProvider();
        var page        = new AsyncDisposablePage();

        // Act & Assert
        var disposer = activator.CreateAsyncReleaser(new CompiledPageActionDescriptor
        {
            PageTypeInfo = page.GetType().GetTypeInfo()
        });

        Assert.NotNull(disposer);
        await disposer(context, viewContext, page);

        // Assert
        Assert.True(page.Disposed);
    }
コード例 #5
0
    public void CreateActivator_ReturnsFactoryForPage(Type type)
    {
        // Arrange
        var pageContext = new PageContext();
        var viewContext = new ViewContext();
        var descriptor  = new CompiledPageActionDescriptor
        {
            PageTypeInfo = type.GetTypeInfo(),
        };

        var activator = new DefaultPageActivatorProvider();

        // Act
        var factory  = activator.CreateActivator(descriptor);
        var instance = factory(pageContext, viewContext);

        // Assert
        Assert.NotNull(instance);
        Assert.IsType(type, instance);
    }