private static CompletionContext CreateContext(int position, RazorDirectiveCompletionProvider completionProvider, Document document) { var context = new CompletionContext( completionProvider, document, position, TextSpan.FromBounds(position, position), CompletionTrigger.Invoke, new Mock <OptionSet>().Object, CancellationToken.None); return(context); }
public async Task GetDescriptionAsync_DoesNotAddDescriptionWhenPropertyAbsent() { // Arrange var document = CreateDocument(); var item = CompletionItem.Create("TestDirective"); var codeDocumentProvider = new Mock <RazorCodeDocumentProvider>(); var completionProvider = new RazorDirectiveCompletionProvider(new Lazy <RazorCodeDocumentProvider>(() => codeDocumentProvider.Object)); // Act var description = await completionProvider.GetDescriptionAsync(document, item, CancellationToken.None); // Assert Assert.Empty(description.TaggedParts); Assert.Equal(string.Empty, description.Text); }
public void GetCompletionItems_ProvidesCompletionsForDirectivesWithoutDescription() { // Arrange var customDirective = DirectiveDescriptor.CreateSingleLineDirective("custom"); var codeDocumentProvider = CreateCodeDocumentProvider("@", new[] { customDirective }); var completionProvider = new RazorDirectiveCompletionProvider(codeDocumentProvider); var document = CreateDocument(); codeDocumentProvider.Value.TryGetFromDocument(document, out var codeDocument); var syntaxTree = codeDocument.GetSyntaxTree(); // Act var completionItems = completionProvider.GetCompletionItems(syntaxTree); // Assert var customDirectiveCompletion = Assert.Single(completionItems, item => item.DisplayText == customDirective.Directive); AssertRazorCompletionItemDefaults(customDirectiveCompletion); Assert.DoesNotContain(customDirectiveCompletion.Properties, property => property.Key == RazorDirectiveCompletionProvider.DescriptionKey); }
public void GetCompletionItems_ProvidesCompletionsForDefaultDirectives() { // Arrange var codeDocumentProvider = CreateCodeDocumentProvider("@", Enumerable.Empty <DirectiveDescriptor>()); var completionProvider = new RazorDirectiveCompletionProvider(codeDocumentProvider); var document = CreateDocument(); codeDocumentProvider.Value.TryGetFromDocument(document, out var codeDocument); var syntaxTree = codeDocument.GetSyntaxTree(); // Act var completionItems = completionProvider.GetCompletionItems(syntaxTree); // Assert Assert.Collection( completionItems, item => AssertRazorCompletionItem(DefaultDirectives[0].Description, item), item => AssertRazorCompletionItem(DefaultDirectives[1].Description, item), item => AssertRazorCompletionItem(DefaultDirectives[2].Description, item)); }
public async Task GetDescriptionAsync_AddsDirectiveDescriptionIfPropertyExists() { // Arrange var document = CreateDocument(); var expectedDescription = "The expected description"; var item = CompletionItem.Create("TestDirective") .WithProperties((new Dictionary <string, string>() { [RazorDirectiveCompletionProvider.DescriptionKey] = expectedDescription, }).ToImmutableDictionary()); var codeDocumentProvider = new Mock <RazorCodeDocumentProvider>(); var completionProvider = new RazorDirectiveCompletionProvider(new Lazy <RazorCodeDocumentProvider>(() => codeDocumentProvider.Object)); // Act var description = await completionProvider.GetDescriptionAsync(document, item, CancellationToken.None); // Assert var part = Assert.Single(description.TaggedParts); Assert.Equal(TextTags.Text, part.Tag); Assert.Equal(expectedDescription, part.Text); Assert.Equal(expectedDescription, description.Text); }