public void OnProvidersExecuting_CachesViewStartFactories() { // Arrange var descriptor = new PageActionDescriptor { RelativePath = "/Home/Path1/File.cshtml", ViewEnginePath = "/Home/Path1/File.cshtml", FilterDescriptors = new FilterDescriptor[0], }; var loader = new Mock <IPageLoader>(); loader .Setup(l => l.Load(It.IsAny <PageActionDescriptor>())) .Returns(CreateCompiledPageActionDescriptor(descriptor, pageType: typeof(PageWithModel))); var razorPageFactoryProvider = new Mock <IRazorPageFactoryProvider>(); Func <IRazorPage> factory1 = () => null; Func <IRazorPage> factory2 = () => null; razorPageFactoryProvider .Setup(f => f.CreateFactory("/Home/Path1/_ViewStart.cshtml")) .Returns(new RazorPageFactoryResult(new CompiledViewDescriptor(), factory1)); razorPageFactoryProvider .Setup(f => f.CreateFactory("/_ViewStart.cshtml")) .Returns(new RazorPageFactoryResult(new CompiledViewDescriptor(), factory2)); var fileProvider = new TestFileProvider(); fileProvider.AddFile("/Home/Path1/_ViewStart.cshtml", "content1"); fileProvider.AddFile("/_ViewStart.cshtml", "content2"); var accessor = Mock.Of <IRazorViewEngineFileProviderAccessor>(a => a.FileProvider == fileProvider); var defaultRazorProject = new FileProviderRazorProject(accessor, _hostingEnvironment); var invokerProvider = CreateInvokerProvider( loader.Object, CreateActionDescriptorCollection(descriptor), razorPageFactoryProvider: razorPageFactoryProvider.Object, razorProject: defaultRazorProject); 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; Assert.Equal(new[] { factory2, factory1 }, entry.ViewStartFactories); }
public CompiledPageRouteModelProviderTest() { FileProvider = new TestFileProvider(); Project = new FileProviderRazorProject( Mock.Of <IRazorViewEngineFileProviderAccessor>(a => a.FileProvider == FileProvider), Mock.Of <IHostingEnvironment>(e => e.ContentRootPath == "BasePath")); TemplateEngine = new RazorTemplateEngine(RazorEngine.Create(), Project); PagesOptions = new RazorPagesOptions(); Provider = new TestCompiledPageRouteModelProvider(new ApplicationPartManager(), Options.Create(PagesOptions), TemplateEngine, NullLoggerFactory.Instance); }
private TestCompiledPageRouteModelProvider CreateProvider( RazorPagesOptions options = null, IList <CompiledViewDescriptor> descriptors = null, TestFileProvider fileProvider = null) { options = options ?? new RazorPagesOptions(); fileProvider = fileProvider ?? new TestFileProvider(); var project = new FileProviderRazorProject( Mock.Of <IRazorViewEngineFileProviderAccessor>(a => a.FileProvider == fileProvider), Mock.Of <IHostingEnvironment>(e => e.ContentRootPath == "BasePath")); var templateEngine = new RazorTemplateEngine(RazorEngine.Create(), project); var provider = new TestCompiledPageRouteModelProvider( new ApplicationPartManager(), Options.Create(options), templateEngine, NullLogger <CompiledPageRouteModelProvider> .Instance); provider.Descriptors.AddRange(descriptors ?? Array.Empty <CompiledViewDescriptor>()); return(provider); }