public async Task RazorServerReadyAsync_ReportsReadyAsync() { // Arrange var testDocUri = new Uri("C:/path/to/file.razor"); var testVirtualDocUri = new Uri("C:/path/to/file2.razor.g"); var testCSharpDocUri = new Uri("C:/path/to/file.razor.g.cs"); var testVirtualDocument = new TestVirtualDocumentSnapshot(testVirtualDocUri, 0); var csharpVirtualDocument = new CSharpVirtualDocumentSnapshot(testCSharpDocUri, TextBuffer.CurrentSnapshot, 0); LSPDocumentSnapshot testDocument = new TestLSPDocumentSnapshot(testDocUri, 0, testVirtualDocument, csharpVirtualDocument); var documentManager = new Mock <TrackingLSPDocumentManager>(MockBehavior.Strict); documentManager.Setup(manager => manager.TryGetDocument(It.IsAny <Uri>(), out testDocument)) .Returns(true); var expectedResults = new SemanticTokens { }; var requestInvoker = new Mock <LSPRequestInvoker>(MockBehavior.Strict); requestInvoker.Setup(invoker => invoker.ReinvokeRequestOnServerAsync <SemanticTokensParams, SemanticTokens>( TextBuffer, Methods.TextDocumentSemanticTokensFullName, LanguageServerKind.CSharp.ToContentType(), It.IsAny <SemanticTokensParams>(), It.IsAny <CancellationToken>() )).Returns(Task.FromResult(new ReinvocationResponse <SemanticTokens>("languageClient", expectedResults))); var uIContextManager = new Mock <RazorUIContextManager>(MockBehavior.Strict); uIContextManager.Setup(m => m.SetUIContextAsync(RazorLSPConstants.RazorActiveUIContextGuid, true, It.IsAny <CancellationToken>())) .Returns(() => Task.CompletedTask) .Verifiable(); var disposable = new Mock <IDisposable>(MockBehavior.Strict); disposable .Setup(d => d.Dispose()) .Verifiable(); var clientOptionsMonitor = new Mock <RazorLSPClientOptionsMonitor>(MockBehavior.Strict); var documentSynchronizer = new Mock <LSPDocumentSynchronizer>(MockBehavior.Strict); var target = new DefaultRazorLanguageServerCustomMessageTarget( documentManager.Object, JoinableTaskContext, requestInvoker.Object, uIContextManager.Object, disposable.Object, clientOptionsMonitor.Object, documentSynchronizer.Object); // Act await target.RazorServerReadyAsync(CancellationToken.None); // Assert uIContextManager.Verify(); disposable.Verify(); }
public async Task RazorServerReadyAsync_SetsUIContext() { // Arrange var testDocUri = new Uri("C:/path/to/file.razor"); var testVirtualDocUri = new Uri("C:/path/to/file2.razor.g"); var testCSharpDocUri = new Uri("C:/path/to/file.razor.g.cs"); var testVirtualDocument = new TestVirtualDocumentSnapshot(testVirtualDocUri, 0); var csharpVirtualDocument = new CSharpVirtualDocumentSnapshot(testCSharpDocUri, Mock.Of <ITextSnapshot>(), 0); LSPDocumentSnapshot testDocument = new TestLSPDocumentSnapshot(testDocUri, 0, testVirtualDocument, csharpVirtualDocument); var documentManager = new Mock <TrackingLSPDocumentManager>(MockBehavior.Strict); documentManager.Setup(manager => manager.TryGetDocument(It.IsAny <Uri>(), out testDocument)) .Returns(true); var expectedResults = new SemanticTokens { }; var requestInvoker = new Mock <LSPRequestInvoker>(MockBehavior.Strict); requestInvoker.Setup(invoker => invoker.ReinvokeRequestOnServerAsync <SemanticTokensParams, SemanticTokens>( LanguageServerConstants.LegacyRazorSemanticTokensEndpoint, LanguageServerKind.CSharp.ToContentType(), It.IsAny <SemanticTokensParams>(), It.IsAny <CancellationToken>() )).Returns(Task.FromResult(expectedResults)); var uIContextManager = new Mock <RazorUIContextManager>(MockBehavior.Strict); uIContextManager.Setup(m => m.SetUIContextAsync(RazorLSPConstants.RazorActiveUIContextGuid, true, It.IsAny <CancellationToken>())) .Returns(() => Task.CompletedTask) .Verifiable(); var target = new DefaultRazorLanguageServerCustomMessageTarget(documentManager.Object, JoinableTaskContext, requestInvoker.Object, uIContextManager.Object); // Act await target.RazorServerReadyAsync(CancellationToken.None); // Assert uIContextManager.Verify(); }