public async Task HandleRequestAsync_ProjectionNotFound_ReturnsNull() { // Arrange var documentManager = new TestDocumentManager(); var snapshot = new StringTextSnapshot(@" @code { public string _foo; }"); documentManager.AddDocument(Uri, Mock.Of <LSPDocumentSnapshot>(m => m.Snapshot == snapshot, MockBehavior.Strict)); var requestInvoker = Mock.Of <LSPRequestInvoker>(MockBehavior.Strict); var projectionProvider = new Mock <LSPProjectionProvider>(MockBehavior.Strict).Object; Mock.Get(projectionProvider).Setup(projectionProvider => projectionProvider.GetProjectionAsync(It.IsAny <LSPDocumentSnapshot>(), It.IsAny <Position>(), CancellationToken.None)) .Returns(Task.FromResult <ProjectionResult>(null)); var mappingProvider = Mock.Of <LSPDocumentMappingProvider>(MockBehavior.Strict); var formatOnTypeHandler = new OnTypeFormattingHandler(documentManager, requestInvoker, projectionProvider, mappingProvider); var formattingRequest = new DocumentOnTypeFormattingParams() { TextDocument = new TextDocumentIdentifier() { Uri = Uri }, Position = new Position(0, 1), Character = ";", Options = new FormattingOptions() }; // Act var result = await formatOnTypeHandler.HandleRequestAsync(formattingRequest, new ClientCapabilities(), CancellationToken.None).ConfigureAwait(false); // Assert Assert.Null(result); }
public async Task HandleRequestAsync_DocumentNotFound_ReturnsNull() { // Arrange var documentManager = new TestDocumentManager(); var requestInvoker = Mock.Of <LSPRequestInvoker>(MockBehavior.Strict); var projectionProvider = Mock.Of <LSPProjectionProvider>(MockBehavior.Strict); var mappingProvider = Mock.Of <LSPDocumentMappingProvider>(MockBehavior.Strict); var formatOnTypeHandler = new OnTypeFormattingHandler(documentManager, requestInvoker, projectionProvider, mappingProvider); var formattingRequest = new DocumentOnTypeFormattingParams() { TextDocument = new TextDocumentIdentifier() { Uri = Uri }, Position = new Position(0, 1), Character = ";", Options = new FormattingOptions() }; // Act var result = await formatOnTypeHandler.HandleRequestAsync(formattingRequest, new ClientCapabilities(), CancellationToken.None).ConfigureAwait(false); // Assert Assert.Null(result); }
public async Task HandleRequestAsync_CSharpProjection_InvokesCSharpLanguageServer() { // Arrange var called = false; var expectedEdit = new TextEdit(); var documentManager = new TestDocumentManager(); var snapshot = new StringTextSnapshot(@" @code { public string _foo; }"); documentManager.AddDocument(Uri, Mock.Of <LSPDocumentSnapshot>(m => m.Snapshot == snapshot, MockBehavior.Strict)); var requestInvoker = new Mock <LSPRequestInvoker>(MockBehavior.Strict); requestInvoker .Setup(r => r.ReinvokeRequestOnServerAsync <DocumentOnTypeFormattingParams, TextEdit[]>(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <DocumentOnTypeFormattingParams>(), It.IsAny <CancellationToken>())) .Callback <string, string, DocumentOnTypeFormattingParams, CancellationToken>((method, serverContentType, onTypeFormattingParams, ct) => { Assert.Equal(Methods.TextDocumentOnTypeFormattingName, method); Assert.Equal(RazorLSPConstants.CSharpContentTypeName, serverContentType); called = true; }) .Returns(Task.FromResult(new[] { expectedEdit })); var projectionResult = new ProjectionResult() { LanguageKind = RazorLanguageKind.CSharp, }; var projectionProvider = new Mock <LSPProjectionProvider>(MockBehavior.Strict); projectionProvider.Setup(p => p.GetProjectionAsync(It.IsAny <LSPDocumentSnapshot>(), It.IsAny <Position>(), It.IsAny <CancellationToken>())).Returns(Task.FromResult(projectionResult)); var mappingProvider = new Mock <LSPDocumentMappingProvider>(MockBehavior.Strict).Object; Mock.Get(mappingProvider).Setup(p => p.RemapFormattedTextEditsAsync(null, It.IsAny <TextEdit[]>(), It.IsAny <FormattingOptions>(), false, CancellationToken.None)) .Returns(Task.FromResult <TextEdit[]>(null)); var formatOnTypeHandler = new OnTypeFormattingHandler(documentManager, requestInvoker.Object, projectionProvider.Object, mappingProvider); var formattingRequest = new DocumentOnTypeFormattingParams() { TextDocument = new TextDocumentIdentifier() { Uri = Uri }, Position = new Position(2, 19), Character = ";", Options = new FormattingOptions() }; // Act var result = await formatOnTypeHandler.HandleRequestAsync(formattingRequest, new ClientCapabilities(), CancellationToken.None).ConfigureAwait(false); // Assert Assert.True(called); }
public async Task HandleRequestAsync_UnexpectedTriggerCharacter_ReturnsNull() { // Arrange var documentManager = new TestDocumentManager(); var snapshot = new StringTextSnapshot(@" @code { public string _foo; }"); documentManager.AddDocument(Uri, Mock.Of <LSPDocumentSnapshot>(m => m.Snapshot == snapshot)); var requestInvoker = Mock.Of <LSPRequestInvoker>(); var projectionResult = new ProjectionResult() { LanguageKind = RazorLanguageKind.CSharp, }; var projectionProvider = new Mock <LSPProjectionProvider>(); projectionProvider.Setup(p => p.GetProjectionAsync(It.IsAny <LSPDocumentSnapshot>(), It.IsAny <Position>(), It.IsAny <CancellationToken>())).Returns(Task.FromResult(projectionResult)); var mappingProvider = Mock.Of <LSPDocumentMappingProvider>(); var formatOnTypeHandler = new OnTypeFormattingHandler(documentManager, requestInvoker, projectionProvider.Object, mappingProvider); var formattingRequest = new DocumentOnTypeFormattingParams() { TextDocument = new TextDocumentIdentifier() { Uri = Uri }, Position = new Position(0, 1), Character = ".", Options = new FormattingOptions() }; // Act var result = await formatOnTypeHandler.HandleRequestAsync(formattingRequest, new ClientCapabilities(), CancellationToken.None).ConfigureAwait(false); // Assert Assert.Null(result); }