public void Execute_NoOpsForBlazorComponents()
    {
        // Arrange
        var properties   = new RazorSourceDocumentProperties(filePath: "ignored", relativePath: "Test.razor");
        var codeDocument = RazorCodeDocument.Create(RazorSourceDocument.Create("Hello world", properties));

        codeDocument.SetFileKind(FileKinds.Component);

        var engine = CreateProjectEngine(b =>
        {
            PageDirective.Register(b);
        }).Engine;
        var irDocument = CreateIRDocument(engine, codeDocument);
        var pass       = new CreateNewOnMetadataUpdateAttributePass
        {
            Engine = engine
        };
        var documentClassifier = new DefaultDocumentClassifierPass {
            Engine = engine
        };

        // Act
        documentClassifier.Execute(codeDocument, irDocument);
        pass.Execute(codeDocument, irDocument);
        var visitor = new Visitor();

        visitor.Visit(irDocument);

        // Assert
        Assert.Empty(visitor.ExtensionNodes);
    }
    public void Execute_IgnoresDocumentsWithDocumentKind()
    {
        // Arrange
        var documentNode = new DocumentIntermediateNode()
        {
            DocumentKind = "ignore",
            Options      = RazorCodeGenerationOptions.CreateDefault(),
        };

        var pass = new DefaultDocumentClassifierPass();

        pass.Engine = CreateProjectEngine().Engine;

        // Act
        pass.Execute(TestRazorCodeDocument.CreateEmpty(), documentNode);

        // Assert
        Assert.Equal("ignore", documentNode.DocumentKind);
        NoChildren(documentNode);
    }
    public void Execute_CreatesClassStructure()
    {
        // Arrange
        var documentNode = new DocumentIntermediateNode()
        {
            Options = RazorCodeGenerationOptions.CreateDefault(),
        };

        var pass = new DefaultDocumentClassifierPass();

        pass.Engine = CreateProjectEngine().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);
    }