File: Completion\DefaultRazorCompletionFactsServiceTest.cs
Web Access
Project: src\src\Razor\src\Razor\test\Microsoft.CodeAnalysis.Razor.Workspaces.UnitTests\Microsoft.CodeAnalysis.Razor.Workspaces.UnitTests.csproj (Microsoft.CodeAnalysis.Razor.Workspaces.UnitTests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.Collections.Immutable;
using Microsoft.AspNetCore.Razor.Language;
using Microsoft.AspNetCore.Razor.Test.Common;
using Xunit;
using Xunit.Abstractions;
 
namespace Microsoft.CodeAnalysis.Razor.Completion;
 
public class DefaultRazorCompletionFactsServiceTest(ITestOutputHelper testOutput) : ToolingTestBase(testOutput)
{
    [Fact]
    public void GetDirectiveCompletionItems_AllProvidersCompletionItems()
    {
        // Arrange
        var sourceDocument = RazorSourceDocument.Create("", RazorSourceDocumentProperties.Default);
        var codeDocument = RazorCodeDocument.Create(sourceDocument);
        var syntaxTree = RazorSyntaxTree.Parse(TestRazorSourceDocument.Create());
        var tagHelperDocumentContext = TagHelperDocumentContext.GetOrCreate(tagHelpers: []);
 
        var completionItem1 = RazorCompletionItem.CreateDirective(
            displayText: "displayText1",
            insertText: "insertText1",
            sortText: null,
            descriptionInfo: null!,
            commitCharacters: [],
            isSnippet: false);
 
        var context = new RazorCompletionContext(codeDocument, AbsoluteIndex: 0, Owner: null, SyntaxTree: syntaxTree, TagHelperDocumentContext: tagHelperDocumentContext);
        var provider1 = StrictMock.Of<IRazorCompletionItemProvider>(p =>
            p.GetCompletionItems(context) == ImmutableArray.Create(completionItem1));
 
        var completionItem2 = RazorCompletionItem.CreateDirective(
            displayText: "displayText2",
            insertText: "insertText2",
            sortText: null,
            descriptionInfo: null!,
            commitCharacters: [],
            isSnippet: false);
 
        var provider2 = StrictMock.Of<IRazorCompletionItemProvider>(p =>
            p.GetCompletionItems(context) == ImmutableArray.Create(completionItem2));
 
        var completionFactsService = new TestRazorCompletionFactsProvider(provider1, provider2);
 
        // Act
        var result = completionFactsService.GetCompletionItems(context);
 
        // Assert
        Assert.Equal<RazorCompletionItem>([completionItem1, completionItem2], result.Items);
    }
 
    private sealed class TestRazorCompletionFactsProvider(
        params ImmutableArray<IRazorCompletionItemProvider> providers)
        : AbstractRazorCompletionFactsService(providers);
}