public async Task Handle_ProvidesDirectiveCompletionItems() { // Arrange var documentPath = "C:/path/to/document.cshtml"; var codeDocument = CreateCodeDocument("@"); var documentResolver = CreateDocumentResolver(documentPath, codeDocument); var completionEndpoint = new RazorCompletionEndpoint( Dispatcher, documentResolver, CompletionFactsService, CompletionListCache, LoggerFactory); completionEndpoint.GetRegistration(ClientCapabilities); var request = new VSCompletionParamsBridge() { TextDocument = new TextDocumentIdentifier() { Uri = new Uri(documentPath) }, Position = new Position(0, 1), Context = new VSInternalCompletionContext(), }; // Act var completionList = await Task.Run(() => completionEndpoint.Handle(request, default)); // Assert // These are the default directives that don't need to be separately registered, they should always be part of the completion list. Assert.Contains(completionList.Items, item => item.InsertText == "addTagHelper"); Assert.Contains(completionList.Items, item => item.InsertText == "removeTagHelper"); Assert.Contains(completionList.Items, item => item.InsertText == "tagHelperPrefix"); }
public async Task Handle_ProvidesTagHelperElementCompletionItems() { // Arrange var documentPath = "C:/path/to/document.cshtml"; var builder = TagHelperDescriptorBuilder.Create(ComponentMetadata.Component.TagHelperKind, "TestTagHelper", "TestAssembly"); builder.TagMatchingRule(rule => rule.TagName = "Test"); builder.SetTypeName("TestNamespace.TestTagHelper"); var tagHelper = builder.Build(); var tagHelperContext = TagHelperDocumentContext.Create(prefix: string.Empty, new[] { tagHelper }); var codeDocument = CreateCodeDocument("<"); codeDocument.SetTagHelperContext(tagHelperContext); var documentResolver = CreateDocumentResolver(documentPath, codeDocument); var completionEndpoint = new RazorCompletionEndpoint( Dispatcher, documentResolver, CompletionFactsService, CompletionListCache, LoggerFactory); completionEndpoint.GetRegistration(ClientCapabilities); var request = new VSCompletionParamsBridge() { TextDocument = new TextDocumentIdentifier() { Uri = new Uri(documentPath) }, Position = new Position(0, 1), Context = new VSInternalCompletionContext(), }; // Act var completionList = await Task.Run(() => completionEndpoint.Handle(request, default)); // Assert Assert.Contains(completionList.Items, item => item.InsertText == "Test"); }
public async Task Handle_Unsupported_NoCompletionItems() { // Arrange var documentPath = "C:/path/to/document.cshtml"; var codeDocument = CreateCodeDocument("@"); codeDocument.SetUnsupported(); var documentResolver = CreateDocumentResolver(documentPath, codeDocument); var completionEndpoint = new RazorCompletionEndpoint( Dispatcher, documentResolver, CompletionFactsService, CompletionListCache, LoggerFactory); completionEndpoint.GetRegistration(ClientCapabilities); var request = new VSCompletionParamsBridge() { TextDocument = new TextDocumentIdentifier() { Uri = new Uri(documentPath) }, Position = new Position(0, 1), Context = new VSInternalCompletionContext(), }; // Act var completionList = await Task.Run(() => completionEndpoint.Handle(request, default)); // Assert Assert.Null(completionList); }