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);
        }