public async Task RazorRangeFormattingAsync_DocumentNotFound_ReturnsEmpty() { // Arrange var documentManager = new Mock <TrackingLSPDocumentManager>(MockBehavior.Strict).Object; Mock.Get(documentManager).Setup(m => m.TryGetDocument(new Uri("c:/Some/path/to/file.razor"), out It.Ref <LSPDocumentSnapshot> .IsAny)).Returns(false); var requestInvoker = new Mock <LSPRequestInvoker>(MockBehavior.Strict); var uIContextManager = new Mock <RazorUIContextManager>(MockBehavior.Strict); var disposable = new Mock <IDisposable>(MockBehavior.Strict); var documentSynchronizer = new Mock <LSPDocumentSynchronizer>(MockBehavior.Strict); var target = new DefaultRazorLanguageServerCustomMessageTarget( documentManager, JoinableTaskContext, requestInvoker.Object, uIContextManager.Object, disposable.Object, EditorSettingsManager, documentSynchronizer.Object); var request = new RazorDocumentRangeFormattingParams() { HostDocumentFilePath = "c:/Some/path/to/file.razor", Kind = RazorLanguageKind.CSharp, ProjectedRange = new Range(), Options = new FormattingOptions() { TabSize = 4, InsertSpaces = true } }; // Act var result = await target.RazorRangeFormattingAsync(request, CancellationToken.None).ConfigureAwait(false); // Assert Assert.NotNull(result); Assert.Empty(result.Edits); }
public async Task RazorRangeFormattingAsync_LanguageKindRazor_ReturnsEmpty() { // Arrange var documentManager = Mock.Of <TrackingLSPDocumentManager>(); var requestInvoker = new Mock <LSPRequestInvoker>(); var target = new DefaultRazorLanguageServerCustomMessageTarget(documentManager, JoinableTaskContext, requestInvoker.Object); var request = new RazorDocumentRangeFormattingParams() { HostDocumentFilePath = "c:/Some/path/to/file.razor", Kind = RazorLanguageKind.Razor, ProjectedRange = new Range(), Options = new FormattingOptions() { TabSize = 4, InsertSpaces = true } }; // Act var result = await target.RazorRangeFormattingAsync(request, CancellationToken.None).ConfigureAwait(false); // Assert Assert.NotNull(result); Assert.Empty(result.Edits); }
public async Task RazorRangeFormattingAsync_ValidRequest_InvokesLanguageServer() { // Arrange var filePath = "c:/Some/path/to/file.razor"; var uri = new Uri(filePath); var virtualDocument = new CSharpVirtualDocumentSnapshot(new Uri($"{filePath}.g.cs"), Mock.Of <ITextSnapshot>(MockBehavior.Strict), 1); LSPDocumentSnapshot document = new TestLSPDocumentSnapshot(uri, 1, new[] { virtualDocument }); var documentManager = new Mock <TrackingLSPDocumentManager>(MockBehavior.Strict); documentManager.Setup(manager => manager.TryGetDocument(It.IsAny <Uri>(), out document)) .Returns(true); var expectedEdit = new TextEdit() { NewText = "SomeEdit", Range = new Range() { Start = new Position(), End = new Position() } }; var requestInvoker = new Mock <LSPRequestInvoker>(MockBehavior.Strict); requestInvoker .Setup(r => r.ReinvokeRequestOnServerAsync <DocumentRangeFormattingParams, TextEdit[]>(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <DocumentRangeFormattingParams>(), It.IsAny <CancellationToken>())) .Returns(Task.FromResult(new[] { expectedEdit })); var uIContextManager = new Mock <RazorUIContextManager>(MockBehavior.Strict); var disposable = new Mock <IDisposable>(MockBehavior.Strict); var clientOptionsMonitor = new Mock <RazorLSPClientOptionsMonitor>(MockBehavior.Strict); var target = new DefaultRazorLanguageServerCustomMessageTarget( documentManager.Object, JoinableTaskContext, requestInvoker.Object, uIContextManager.Object, disposable.Object, clientOptionsMonitor.Object); var request = new RazorDocumentRangeFormattingParams() { HostDocumentFilePath = filePath, Kind = RazorLanguageKind.CSharp, ProjectedRange = new Range() { Start = new Position(), End = new Position() }, Options = new FormattingOptions() { TabSize = 4, InsertSpaces = true } }; // Act var result = await target.RazorRangeFormattingAsync(request, CancellationToken.None).ConfigureAwait(false); // Assert Assert.NotNull(result); var edit = Assert.Single(result.Edits); Assert.Equal("SomeEdit", edit.NewText); }