private VirtualRazorProjectFileSystem GetVirtualRazorProjectSystem(SourceItem[] inputItems) { var project = new VirtualRazorProjectFileSystem(); foreach (var item in inputItems) { var projectItem = new DefaultRazorProjectItem( basePath: "/", filePath: item.FilePath, relativePhysicalPath: item.RelativePhysicalPath, file: new FileInfo(item.SourcePath)); project.Add(projectItem); } return(project); }
public void OnProvidersExecuting_ValidatesChecksum_RejectsPageWhenContentDoesntMatch() { // Arrange var descriptors = new[] { CreateVersion_2_1_Descriptor("/Pages/About.cshtml", metadata: new object[] { new RazorSourceChecksumAttribute("SHA1", GetChecksum("some content"), "/Pages/About.cshtml"), }), }; var fileSystem = new VirtualRazorProjectFileSystem(); fileSystem.Add(new TestRazorProjectItem("/Pages/About.cshtml", "some other content")); var provider = CreateProvider(descriptors: descriptors, fileSystem: fileSystem); var context = new PageRouteModelProviderContext(); // Act provider.OnProvidersExecuting(context); // Assert Assert.Empty(context.RouteModels); }
public void GetCompilationFailedResult_UsesPhysicalPath() { // Arrange var viewPath = "/Views/Home/Index.cshtml"; var physicalPath = @"x:\myapp\views\home\index.cshtml"; var fileSystem = new VirtualRazorProjectFileSystem(); fileSystem.Add(new TestRazorProjectItem(viewPath, "<span name=\"@(User.Id\">", physicalPath: physicalPath)); var razorEngine = RazorEngine.Create(); var templateEngine = new MvcRazorTemplateEngine(razorEngine, fileSystem); var codeDocument = templateEngine.CreateCodeDocument(viewPath); // Act var csharpDocument = templateEngine.GenerateCode(codeDocument); var compilationResult = CompilationFailedExceptionFactory.Create(codeDocument, csharpDocument.Diagnostics); // Assert var failure = Assert.Single(compilationResult.CompilationFailures); Assert.Equal(physicalPath, failure.SourceFilePath); }
public void OnProvidersExecuting_AddsPagesUnderAreas() { // Arrange var fileSystem = new VirtualRazorProjectFileSystem(); fileSystem.Add(new TestRazorProjectItem("/Areas/Products/Pages/Manage/Categories.cshtml", "@page")); fileSystem.Add(new TestRazorProjectItem("/Areas/Products/Pages/Index.cshtml", "@page")); fileSystem.Add(new TestRazorProjectItem("/Areas/Products/Pages/List.cshtml", "@page \"{sortOrder?}\"")); fileSystem.Add(new TestRazorProjectItem("/Areas/Products/Pages/_Test.cshtml", "@page")); var optionsManager = Options.Create(new RazorPagesOptions { AllowAreas = true }); var provider = new RazorProjectPageRouteModelProvider(fileSystem, optionsManager, NullLoggerFactory.Instance); var context = new PageRouteModelProviderContext(); // Act provider.OnProvidersExecuting(context); // Assert Assert.Collection(context.RouteModels, model => { Assert.Equal("/Areas/Products/Pages/Index.cshtml", model.RelativePath); Assert.Equal("/Index", model.ViewEnginePath); Assert.Collection(model.Selectors, selector => Assert.Equal("Products/Index", selector.AttributeRouteModel.Template), selector => Assert.Equal("Products", selector.AttributeRouteModel.Template)); Assert.Collection(model.RouteValues.OrderBy(k => k.Key), kvp => { Assert.Equal("area", kvp.Key); Assert.Equal("Products", kvp.Value); }, kvp => { Assert.Equal("page", kvp.Key); Assert.Equal("/Index", kvp.Value); }); }, model => { Assert.Equal("/Areas/Products/Pages/List.cshtml", model.RelativePath); Assert.Equal("/List", model.ViewEnginePath); Assert.Collection(model.Selectors, selector => Assert.Equal("Products/List/{sortOrder?}", selector.AttributeRouteModel.Template)); Assert.Collection(model.RouteValues.OrderBy(k => k.Key), kvp => { Assert.Equal("area", kvp.Key); Assert.Equal("Products", kvp.Value); }, kvp => { Assert.Equal("page", kvp.Key); Assert.Equal("/List", kvp.Value); }); }, model => { Assert.Equal("/Areas/Products/Pages/_Test.cshtml", model.RelativePath); Assert.Equal("/_Test", model.ViewEnginePath); Assert.Collection(model.Selectors, selector => Assert.Equal("Products/_Test", selector.AttributeRouteModel.Template)); Assert.Collection(model.RouteValues.OrderBy(k => k.Key), kvp => { Assert.Equal("area", kvp.Key); Assert.Equal("Products", kvp.Value); }, kvp => { Assert.Equal("page", kvp.Key); Assert.Equal("/_Test", kvp.Value); }); }, model => { Assert.Equal("/Areas/Products/Pages/Manage/Categories.cshtml", model.RelativePath); Assert.Equal("/Manage/Categories", model.ViewEnginePath); Assert.Collection(model.Selectors, selector => Assert.Equal("Products/Manage/Categories", selector.AttributeRouteModel.Template)); Assert.Collection(model.RouteValues.OrderBy(k => k.Key), kvp => { Assert.Equal("area", kvp.Key); Assert.Equal("Products", kvp.Value); }, kvp => { Assert.Equal("page", kvp.Key); Assert.Equal("/Manage/Categories", kvp.Value); }); }); }