public void OnProvidersExecuted(ActionInvokerProviderContext context) { }
public void OnProvidersExecuting_WithModel_PopulatesCacheEntry() { // Arrange var descriptor = CreateCompiledPageActionDescriptor( new PageActionDescriptor { RelativePath = "/Path1", FilterDescriptors = new FilterDescriptor[0] }, pageType: typeof(PageWithModel), modelType: typeof(DerivedTestPageModel)); Func <PageContext, ViewContext, object> factory = (a, b) => null; Func <PageContext, ViewContext, object, ValueTask> releaser = (a, b, c) => default; Func <PageContext, object> modelFactory = _ => null; Func <PageContext, object, ValueTask> modelDisposer = (_, __) => default; var loader = Mock.Of <PageLoader>(); var pageFactoryProvider = new Mock <IPageFactoryProvider>(); pageFactoryProvider .Setup(f => f.CreatePageFactory(It.IsAny <CompiledPageActionDescriptor>())) .Returns(factory); pageFactoryProvider .Setup(f => f.CreateAsyncPageDisposer(It.IsAny <CompiledPageActionDescriptor>())) .Returns(releaser); var modelFactoryProvider = new Mock <IPageModelFactoryProvider>(); modelFactoryProvider .Setup(f => f.CreateModelFactory(It.IsAny <CompiledPageActionDescriptor>())) .Returns(modelFactory); modelFactoryProvider .Setup(f => f.CreateAsyncModelDisposer(It.IsAny <CompiledPageActionDescriptor>())) .Returns(modelDisposer); var invokerProvider = CreateInvokerProvider( loader, pageFactoryProvider.Object, modelFactoryProvider.Object); var context = new ActionInvokerProviderContext(new ActionContext() { ActionDescriptor = descriptor, HttpContext = new DefaultHttpContext(), RouteData = new RouteData(), }); // Act invokerProvider.OnProvidersExecuting(context); // Assert Assert.NotNull(context.Result); var actionInvoker = Assert.IsType <PageActionInvoker>(context.Result); var entry = actionInvoker.CacheEntry; var compiledPageActionDescriptor = Assert.IsType <CompiledPageActionDescriptor>(entry.ActionDescriptor); Assert.Equal(descriptor.RelativePath, compiledPageActionDescriptor.RelativePath); Assert.Same(factory, entry.PageFactory); Assert.Same(releaser, entry.ReleasePage); Assert.Same(modelFactory, entry.ModelFactory); Assert.Same(modelDisposer, entry.ReleaseModel); Assert.NotNull(entry.ViewDataFactory); var pageContext = actionInvoker.PageContext; Assert.Same(compiledPageActionDescriptor, pageContext.ActionDescriptor); Assert.Same(context.ActionContext.HttpContext, pageContext.HttpContext); Assert.Same(context.ActionContext.ModelState, pageContext.ModelState); Assert.Same(context.ActionContext.RouteData, pageContext.RouteData); Assert.Empty(pageContext.ValueProviderFactories); Assert.NotNull(Assert.IsType <ViewDataDictionary <TestPageModel> >(pageContext.ViewData)); Assert.Empty(pageContext.ViewStartFactories); }