public void DecorateCodeBuilder_DesignTimeRazorPathNormalizer_NormalizesChunkInheritanceUtilityPaths( string rootPrefix) { // Arrange var rootedAppPath = $"{rootPrefix}SomeComputer/Location/Project/"; var rootedFilePath = $"{rootPrefix}SomeComputer/Location/Project/src/file.cshtml"; var host = new MvcRazorHost( codeTreeCache: null, pathNormalizer: new DesignTimeRazorPathNormalizer(rootedAppPath)); var chunkInheritanceUtility = new PathValidatingChunkInheritanceUtility(host); var codeBuilderContext = new CodeBuilderContext( new CodeGeneratorContext( host, host.DefaultClassName, host.DefaultNamespace, rootedFilePath, shouldGenerateLinePragmas: true), new ParserErrorSink()); var codeBuilder = new CSharpCodeBuilder(codeBuilderContext); host.ChunkInheritanceUtility = chunkInheritanceUtility; // Act host.DecorateCodeBuilder(codeBuilder, codeBuilderContext); // Assert Assert.Equal("src/file.cshtml", chunkInheritanceUtility.InheritedCodeTreePagePath, StringComparer.Ordinal); }
public void CreateCodeBuilder_PassesCodeGeneratorThroughDecorateMethodOnHost() { // Arrange var mockHost = new Mock<RazorEngineHost>(new CSharpRazorCodeLanguage()) { CallBase = true }; var context = CodeGeneratorContext.Create(mockHost.Object, "different-class", "different-ns", string.Empty, shouldGenerateLinePragmas: true); var expected = new CSharpCodeBuilder(context); mockHost.Setup(h => h.DecorateCodeBuilder(It.IsAny<CSharpCodeBuilder>(), context)) .Returns(expected); var engine = new RazorTemplateEngine(mockHost.Object); // Act var actual = engine.CreateCodeBuilder(context); // Assert Assert.Equal(expected, actual); }