public void Execute_CanInitializeDefaults() { // Arrange var documentNode = new DocumentIntermediateNode() { Options = RazorCodeGenerationOptions.CreateDefault(), }; var builder = IntermediateNodeBuilder.Create(documentNode); builder.Add(new HtmlContentIntermediateNode()); builder.Add(new CSharpCodeIntermediateNode()); var pass = new TestDocumentClassifierPass() { Engine = Engine, Namespace = "TestNamespace", Class = "TestClass", Method = "TestMethod", }; // Act pass.Execute(TestRazorCodeDocument.CreateEmpty(), documentNode); // Assert var @namespace = SingleChild <NamespaceDeclarationIntermediateNode>(documentNode); Assert.Equal("TestNamespace", @namespace.Content); var @class = SingleChild <ClassDeclarationIntermediateNode>(@namespace); Assert.Equal("TestClass", @class.ClassName); var method = SingleChild <MethodDeclarationIntermediateNode>(@class); Assert.Equal("TestMethod", method.MethodName); }
public void Execute_AddsPrimaryAnnotations() { // Arrange var documentNode = new DocumentIntermediateNode() { Options = RazorCodeGenerationOptions.CreateDefault(), }; var builder = IntermediateNodeBuilder.Create(documentNode); builder.Add(new HtmlContentIntermediateNode()); builder.Add(new CSharpCodeIntermediateNode()); var pass = new TestDocumentClassifierPass() { Engine = RazorEngine.CreateEmpty(b => { }), Namespace = "TestNamespace", Class = "TestClass", Method = "TestMethod", }; // Act pass.Execute(TestRazorCodeDocument.CreateEmpty(), documentNode); // Assert var @namespace = SingleChild <NamespaceDeclarationIntermediateNode>(documentNode); AnnotationEquals(@namespace, CommonAnnotations.PrimaryNamespace); var @class = SingleChild <ClassDeclarationIntermediateNode>(@namespace); AnnotationEquals(@class, CommonAnnotations.PrimaryClass); var method = SingleChild <MethodDeclarationIntermediateNode>(@class); AnnotationEquals(method, CommonAnnotations.PrimaryMethod); }
public void Execute_CreatesClassStructure() { // Arrange var documentNode = new DocumentIntermediateNode() { Options = RazorCodeGenerationOptions.CreateDefault(), }; var pass = new DefaultDocumentClassifierPass(); pass.Engine = RazorProjectEngine.Create().Engine; // Act pass.Execute(TestRazorCodeDocument.CreateEmpty(), documentNode); // Assert Assert.Equal("default", documentNode.DocumentKind); var @namespace = SingleChild <NamespaceDeclarationIntermediateNode>(documentNode); var @class = SingleChild <ClassDeclarationIntermediateNode>(@namespace); var method = SingleChild <MethodDeclarationIntermediateNode>(@class); NoChildren(method); }
public void Execute_ThrowsForMissingDependency_CodeTarget() { // Arrange var phase = new DefaultRazorCSharpLoweringPhase(); var engine = RazorEngine.CreateEmpty(b => b.Phases.Add(phase)); var codeDocument = TestRazorCodeDocument.CreateEmpty(); codeDocument.SetSyntaxTree(RazorSyntaxTree.Parse(codeDocument.Source)); var irDocument = new DocumentIntermediateNode() { DocumentKind = "test", }; codeDocument.SetDocumentIntermediateNode(irDocument); // Act & Assert ExceptionAssert.Throws <InvalidOperationException>( () => phase.Execute(codeDocument), $"The document of kind 'test' does not have a '{nameof(CodeTarget)}'. " + $"The document classifier must set a value for '{nameof(DocumentIntermediateNode.Target)}'."); }