Ejemplo n.º 1
0
    public async Task OnPageHandlerExecutionAsync_DoesNotInvokeHandlerExecuted_IfResultIsSet()
    {
        // Arrange
        var pageContext = new PageContext(new ActionContext(
                                              new DefaultHttpContext(),
                                              new RouteData(),
                                              new PageActionDescriptor(),
                                              new ModelStateDictionary()));
        var model = new Mock <object>();

        var modelAsFilter = model.As <IPageFilter>();

        modelAsFilter
        .Setup(f => f.OnPageHandlerExecuting(It.IsAny <PageHandlerExecutingContext>()))
        .Callback((PageHandlerExecutingContext context) => context.Result = new PageResult())
        .Verifiable();

        modelAsFilter
        .Setup(f => f.OnPageHandlerExecuted(It.IsAny <PageHandlerExecutedContext>()))
        .Throws(new Exception("Shouldn't be called"));

        var pageHandlerExecutingContext = new PageHandlerExecutingContext(
            pageContext,
            Array.Empty <IFilterMetadata>(),
            new HandlerMethodDescriptor(),
            new Dictionary <string, object>(),
            model.Object);
        var pageHandlerExecutedContext = new PageHandlerExecutedContext(
            pageContext,
            Array.Empty <IFilterMetadata>(),
            new HandlerMethodDescriptor(),
            model.Object);
        PageHandlerExecutionDelegate next = () => Task.FromResult(pageHandlerExecutedContext);

        var pageHandlerPageFilter = new PageHandlerPageFilter();

        // Act
        await pageHandlerPageFilter.OnPageHandlerExecutionAsync(pageHandlerExecutingContext, next);

        // Assert
        modelAsFilter.Verify();
    }
Ejemplo n.º 2
0
    public async Task OnPageHandlerExecutionAsync_ExecutesSyncFilters()
    {
        // Arrange
        var pageContext = new PageContext(new ActionContext(
                                              new DefaultHttpContext(),
                                              new RouteData(),
                                              new PageActionDescriptor(),
                                              new ModelStateDictionary()));
        var model = new Mock <object>();

        var modelAsFilter = model.As <IPageFilter>();

        modelAsFilter
        .Setup(f => f.OnPageHandlerExecuting(It.IsAny <PageHandlerExecutingContext>()))
        .Verifiable();

        modelAsFilter
        .Setup(f => f.OnPageHandlerExecuted(It.IsAny <PageHandlerExecutedContext>()))
        .Verifiable();

        var pageHandlerExecutingContext = new PageHandlerExecutingContext(
            pageContext,
            Array.Empty <IFilterMetadata>(),
            new HandlerMethodDescriptor(),
            new Dictionary <string, object>(),
            model.Object);
        var pageHandlerExecutedContext = new PageHandlerExecutedContext(
            pageContext,
            Array.Empty <IFilterMetadata>(),
            new HandlerMethodDescriptor(),
            model.Object);
        PageHandlerExecutionDelegate next = () => Task.FromResult(pageHandlerExecutedContext);

        var pageHandlerPageFilter = new PageHandlerPageFilter();

        // Act
        await pageHandlerPageFilter.OnPageHandlerExecutionAsync(pageHandlerExecutingContext, next);

        // Assert
        modelAsFilter.Verify();
    }
Ejemplo n.º 3
0
    public async Task OnPageHandlerExecutionAsync_InvokesNextDelegateIfHandlerDoesNotImplementFilter()
    {
        // Arrange
        var pageContext = new PageContext(new ActionContext(
                                              new DefaultHttpContext(),
                                              new RouteData(),
                                              new PageActionDescriptor(),
                                              new ModelStateDictionary()));
        var model = new object();

        var pageHandlerExecutingContext = new PageHandlerExecutingContext(
            pageContext,
            Array.Empty <IFilterMetadata>(),
            new HandlerMethodDescriptor(),
            new Dictionary <string, object>(),
            model);
        var pageHandlerExecutedContext = new PageHandlerExecutedContext(
            pageContext,
            Array.Empty <IFilterMetadata>(),
            new HandlerMethodDescriptor(),
            model);
        var invoked = false;
        PageHandlerExecutionDelegate next = () =>
        {
            invoked = true;
            return(Task.FromResult(pageHandlerExecutedContext));
        };

        var pageHandlerPageFilter = new PageHandlerPageFilter();

        // Act
        await pageHandlerPageFilter.OnPageHandlerExecutionAsync(pageHandlerExecutingContext, next);

        // Assert
        Assert.True(invoked);
    }