public void Execute_Match_AddsGlobalTargetExtensions() { // Arrange var documentNode = new DocumentIntermediateNode() { Options = RazorCodeGenerationOptions.CreateDefault(), }; var expected = new ICodeTargetExtension[] { new MyExtension1(), new MyExtension2(), }; var pass = new TestDocumentClassifierPass(); pass.Engine = RazorProjectEngine.CreateEmpty(b => { for (var i = 0; i < expected.Length; i++) { b.AddTargetExtension(expected[i]); } }).Engine; ICodeTargetExtension[] extensions = null; pass.CodeTargetCallback = (builder) => extensions = builder.TargetExtensions.ToArray(); // Act pass.Execute(TestRazorCodeDocument.CreateEmpty(), documentNode); // Assert Assert.Equal(expected, extensions); }
public void Execute_AddsTheRestToMethod() { // 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(); pass.Engine = Engine; // Act pass.Execute(TestRazorCodeDocument.CreateEmpty(), documentNode); // Assert var @namespace = SingleChild <NamespaceDeclarationIntermediateNode>(documentNode); var @class = SingleChild <ClassDeclarationIntermediateNode>(@namespace); var method = SingleChild <MethodDeclarationIntermediateNode>(@class); Children( method, n => Assert.IsType <HtmlContentIntermediateNode>(n), n => Assert.IsType <CSharpCodeIntermediateNode>(n)); }
public void Execute_AddsUsingsToNamespace() { // Arrange var documentNode = new DocumentIntermediateNode() { Options = RazorCodeGenerationOptions.CreateDefault(), }; var builder = IntermediateNodeBuilder.Create(documentNode); builder.Add(new UsingDirectiveIntermediateNode()); var pass = new TestDocumentClassifierPass(); pass.Engine = Engine; // Act pass.Execute(TestRazorCodeDocument.CreateEmpty(), documentNode); // Assert var @namespace = SingleChild <NamespaceDeclarationIntermediateNode>(documentNode); Children( @namespace, n => Assert.IsType <UsingDirectiveIntermediateNode>(n), n => Assert.IsType <ClassDeclarationIntermediateNode>(n)); }
public void Execute_Match_SetsDocumentType_AndCreatesStructure() { // Arrange var documentNode = new DocumentIntermediateNode() { Options = RazorCodeGenerationOptions.CreateDefault(), }; var pass = new TestDocumentClassifierPass(); pass.Engine = Engine; // Act pass.Execute(TestRazorCodeDocument.CreateEmpty(), documentNode); // Assert Assert.Equal("test", documentNode.DocumentKind); Assert.NotNull(documentNode.Target); var @namespace = SingleChild <NamespaceDeclarationIntermediateNode>(documentNode); var @class = SingleChild <ClassDeclarationIntermediateNode>(@namespace); var method = SingleChild <MethodDeclarationIntermediateNode>(@class); NoChildren(method); }
public void Execute_HasDocumentKind_IgnoresDocument() { // Arrange var documentNode = new DocumentIntermediateNode() { DocumentKind = "ignore", Options = RazorCodeGenerationOptions.CreateDefault(), }; var pass = new TestDocumentClassifierPass(); pass.Engine = Engine; // Act pass.Execute(TestRazorCodeDocument.CreateEmpty(), documentNode); // Assert Assert.Equal("ignore", documentNode.DocumentKind); NoChildren(documentNode); }
public void Execute_NoMatch_IgnoresDocument() { // Arrange var documentNode = new DocumentIntermediateNode() { Options = RazorCodeGenerationOptions.CreateDefault(), }; var pass = new TestDocumentClassifierPass() { Engine = Engine, ShouldMatch = false, }; // Act pass.Execute(TestRazorCodeDocument.CreateEmpty(), documentNode); // Assert Assert.Null(documentNode.DocumentKind); NoChildren(documentNode); }
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 = Engine, 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_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); }