public async Task Handle_Resolve_TagHelperElementCompletion_ReturnsCompletionItemWithDocumentation() { // Arrange var lspDescriptionFactory = new Mock <LSPTagHelperTooltipFactory>(MockBehavior.Strict); var markdown = new MarkupContent { Kind = MarkupKind.Markdown, Value = "Some Markdown" }; lspDescriptionFactory.Setup(factory => factory.TryCreateTooltip(It.IsAny <AggregateBoundElementDescription>(), out markdown)) .Returns(true); var languageServer = new Mock <ClientNotifierServiceBase>(MockBehavior.Strict); languageServer.Setup(ls => ls.ClientSettings).Returns(new InitializeParams()); var completionEndpoint = new RazorCompletionEndpoint( Dispatcher, EmptyDocumentResolver, CompletionFactsService, lspDescriptionFactory.Object, VSLSPTagHelperTooltipFactory, languageServer.Object, LoggerFactory); var razorCompletionItem = new RazorCompletionItem("TestItem", "TestItem", RazorCompletionItemKind.TagHelperElement); razorCompletionItem.SetTagHelperElementDescriptionInfo(new AggregateBoundElementDescription(Array.Empty <BoundElementDescriptionInfo>())); var completionList = completionEndpoint.CreateLSPCompletionList(new[] { razorCompletionItem }); var completionItem = completionList.Items.Single(); // Act var newCompletionItem = await completionEndpoint.Handle(completionItem, default); // Assert Assert.NotNull(newCompletionItem.Documentation); }
public async Task Handle_Resolve_TagHelperElementCompletion_ReturnsCompletionItemWithDocumentation() { // Arrange var lspDescriptionFactory = new Mock <LSPTagHelperTooltipFactory>(MockBehavior.Strict); var markdown = new MarkupContent { Kind = MarkupKind.Markdown, Value = "Some Markdown" }; lspDescriptionFactory.Setup(factory => factory.TryCreateTooltip(It.IsAny <AggregateBoundElementDescription>(), MarkupKind.Markdown, out markdown)) .Returns(true); var endpoint = new RazorCompletionResolveEndpoint(lspDescriptionFactory.Object, VSLSPTagHelperTooltipFactory, CompletionListCache, LoggerFactory); endpoint.GetRegistration(DefaultClientCapability); var razorCompletionItem = new RazorCompletionItem("TestItem", "TestItem", RazorCompletionItemKind.TagHelperElement); razorCompletionItem.SetTagHelperElementDescriptionInfo(new AggregateBoundElementDescription(Array.Empty <BoundElementDescriptionInfo>())); var completionList = CreateLSPCompletionList(new[] { razorCompletionItem }); var completionItem = completionList.Items.Single(); var parameters = ConvertToBridgedItem(completionItem); // Act var newCompletionItem = await endpoint.Handle(parameters, default); // Assert Assert.NotNull(newCompletionItem.Documentation); }
public async Task Handle_Resolve_TagHelperElementCompletion_ReturnsCompletionItemWithDocumentation() { // Arrange var descriptionFactory = new Mock <TagHelperTooltipFactory>(); var markdown = new MarkupContent { Kind = MarkupKind.Markdown, Value = "Some Markdown" }; descriptionFactory.Setup(factory => factory.TryCreateTooltip(It.IsAny <AggregateBoundElementDescription>(), out markdown)) .Returns(true); var completionEndpoint = new RazorCompletionEndpoint(Dispatcher, EmptyDocumentResolver, CompletionFactsService, descriptionFactory.Object, LoggerFactory); var razorCompletionItem = new RazorCompletionItem("TestItem", "TestItem", RazorCompletionItemKind.TagHelperElement); razorCompletionItem.SetTagHelperElementDescriptionInfo(new AggregateBoundElementDescription(Array.Empty <BoundElementDescriptionInfo>())); var completionList = completionEndpoint.CreateLSPCompletionList(new[] { razorCompletionItem }); var completionItem = completionList.Items.Single(); // Act var newCompletionItem = await completionEndpoint.Handle(completionItem, default); // Assert Assert.NotNull(newCompletionItem.Documentation); }
private IReadOnlyList <RazorCompletionItem> GetElementCompletions( SyntaxNode containingTag, string containingTagName, IEnumerable <KeyValuePair <string, string> > attributes, TagHelperDocumentContext tagHelperDocumentContext) { var ancestors = containingTag.Ancestors(); var(ancestorTagName, ancestorIsTagHelper) = _tagHelperFactsService.GetNearestAncestorTagInfo(ancestors); var elementCompletionContext = new ElementCompletionContext( tagHelperDocumentContext, existingCompletions: Enumerable.Empty <string>(), containingTagName, attributes, ancestorTagName, ancestorIsTagHelper, HtmlFactsService.IsHtmlTagName); var completionItems = new List <RazorCompletionItem>(); var completionResult = _tagHelperCompletionService.GetElementCompletions(elementCompletionContext); foreach (var completion in completionResult.Completions) { var razorCompletionItem = new RazorCompletionItem( displayText: completion.Key, insertText: completion.Key, RazorCompletionItemKind.TagHelperElement, ElementCommitCharacters); var tagHelperDescriptions = completion.Value.Select(tagHelper => new TagHelperDescriptionInfo(tagHelper.GetTypeName(), tagHelper.Documentation)); var elementDescription = new ElementDescriptionInfo(tagHelperDescriptions.ToList()); razorCompletionItem.SetTagHelperElementDescriptionInfo(elementDescription); completionItems.Add(razorCompletionItem); } return(completionItems); }
public void TryConvert_TagHelperElement_ReturnsTrue() { // Arrange var completionItem = new RazorCompletionItem("format", "format", RazorCompletionItemKind.TagHelperElement); completionItem.SetTagHelperElementDescriptionInfo(new ElementDescriptionInfo(Array.Empty <TagHelperDescriptionInfo>())); // Act var result = RazorCompletionEndpoint.TryConvert(completionItem, out var converted); // Assert Assert.True(result); Assert.Equal(completionItem.DisplayText, converted.Label); Assert.Equal(completionItem.InsertText, converted.InsertText); Assert.Equal(completionItem.InsertText, converted.FilterText); Assert.Equal(completionItem.InsertText, converted.SortText); Assert.Null(converted.Detail); Assert.Null(converted.Documentation); Assert.Null(converted.Command); var descriptionInfo = completionItem.GetTagHelperElementDescriptionInfo(); Assert.NotNull(descriptionInfo); }