added test for webflux code lenses
This commit is contained in:
@@ -46,6 +46,8 @@ import org.eclipse.lsp4j.ApplyWorkspaceEditResponse;
|
||||
import org.eclipse.lsp4j.ClientCapabilities;
|
||||
import org.eclipse.lsp4j.CodeActionContext;
|
||||
import org.eclipse.lsp4j.CodeActionParams;
|
||||
import org.eclipse.lsp4j.CodeLens;
|
||||
import org.eclipse.lsp4j.CodeLensParams;
|
||||
import org.eclipse.lsp4j.Command;
|
||||
import org.eclipse.lsp4j.CompletionCapabilities;
|
||||
import org.eclipse.lsp4j.CompletionItem;
|
||||
@@ -471,6 +473,12 @@ public class LanguageServerHarness<S extends SimpleLanguageServerWrapper> {
|
||||
return getServer().getTextDocumentService().hover(params ).get();
|
||||
}
|
||||
|
||||
public List<? extends CodeLens> getCodeLenses(TextDocumentInfo document) throws Exception {
|
||||
CodeLensParams params = new CodeLensParams();
|
||||
params.setTextDocument(document.getId());
|
||||
return getServer().getTextDocumentService().codeLens(params).get();
|
||||
}
|
||||
|
||||
|
||||
public CompletionItem resolveCompletionItem(CompletionItem maybeUnresolved) {
|
||||
if (getServer().hasLazyCompletionResolver()) {
|
||||
|
||||
@@ -60,6 +60,7 @@ import org.springframework.ide.vscode.commons.languageserver.completion.IComplet
|
||||
import org.springframework.ide.vscode.commons.languageserver.composable.LanguageServerComponents;
|
||||
import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFinder;
|
||||
import org.springframework.ide.vscode.commons.languageserver.java.ProjectObserver;
|
||||
import org.springframework.ide.vscode.commons.languageserver.util.CodeLensHandler;
|
||||
import org.springframework.ide.vscode.commons.languageserver.util.HoverHandler;
|
||||
import org.springframework.ide.vscode.commons.languageserver.util.LSFactory;
|
||||
import org.springframework.ide.vscode.commons.languageserver.util.ReferencesHandler;
|
||||
@@ -92,6 +93,7 @@ public class BootJavaLanguageServerComponents implements LanguageServerComponent
|
||||
|
||||
private JavaProjectFinder projectFinder;
|
||||
private BootJavaHoverProvider hoverProvider;
|
||||
private CodeLensHandler codeLensHandler;
|
||||
|
||||
public BootJavaLanguageServerComponents(SimpleLanguageServer server, LSFactory<BootLanguageServerParams> _params) {
|
||||
this.server = server;
|
||||
@@ -147,8 +149,8 @@ public class BootJavaLanguageServerComponents implements LanguageServerComponent
|
||||
// }
|
||||
});
|
||||
|
||||
BootJavaCodeLensEngine codeLensEngine = createCodeLensEngine();
|
||||
documents.onCodeLens(codeLensEngine);
|
||||
codeLensHandler = createCodeLensEngine();
|
||||
documents.onCodeLens(codeLensHandler);
|
||||
|
||||
workspaceService.onDidChangeConfiguraton(settings -> {
|
||||
config.handleConfigurationChange(settings);
|
||||
@@ -174,6 +176,10 @@ public class BootJavaLanguageServerComponents implements LanguageServerComponent
|
||||
return hoverProvider;
|
||||
}
|
||||
|
||||
public CodeLensHandler getCodeLensHandler() {
|
||||
return codeLensHandler;
|
||||
}
|
||||
|
||||
private void initialize(InitializeParams params) {
|
||||
this.indexer.initialize(server.getWorkspaceRoots());
|
||||
}
|
||||
|
||||
@@ -64,7 +64,7 @@ public class WebfluxHandlerCodeLensProvider implements CodeLensProvider {
|
||||
WebfluxHandlerInformation handlerInfo = (WebfluxHandlerInformation) object;
|
||||
|
||||
CodeLens codeLens = new CodeLens();
|
||||
codeLens.setRange(document.toRange(node.getStartPosition(), node.getLength()));
|
||||
codeLens.setRange(document.toRange(node.getName().getStartPosition(), node.getName().getLength()));
|
||||
codeLens.setCommand(new Command(handlerInfo.getSymbol(), null));
|
||||
|
||||
resultAccumulator.add(codeLens);
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
/*******************************************************************************
|
||||
* Copyright (c) 2018 Pivotal, Inc.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* Pivotal, Inc. - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.springframework.ide.vscode.boot.java.requestmapping.test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.io.File;
|
||||
import java.net.URI;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.lsp4j.CodeLens;
|
||||
import org.eclipse.lsp4j.Command;
|
||||
import org.eclipse.lsp4j.Range;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.springframework.ide.vscode.commons.util.text.LanguageId;
|
||||
import org.springframework.ide.vscode.languageserver.testharness.TextDocumentInfo;
|
||||
import org.springframework.ide.vscode.project.harness.BootJavaLanguageServerHarness;
|
||||
import org.springframework.ide.vscode.project.harness.ProjectsHarness;
|
||||
|
||||
/**
|
||||
* @author Martin Lippert
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
public class WebFluxCodeLensProviderTest {
|
||||
|
||||
private BootJavaLanguageServerHarness harness;
|
||||
|
||||
@Before
|
||||
public void setup() throws Exception {
|
||||
harness = BootJavaLanguageServerHarness.builder().build();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRoutesCodeLenses() throws Exception {
|
||||
harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-webflux-project/").toURI()));
|
||||
File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-webflux-project/").toURI());
|
||||
|
||||
String docUri = directory.toPath().resolve("src/main/java/org/test/QuoteHandler.java").toUri().toString();
|
||||
TextDocumentInfo doc = harness.getOrReadFile(new File(new URI(docUri)), LanguageId.JAVA.toString());
|
||||
TextDocumentInfo openedDoc = harness.openDocument(doc);
|
||||
|
||||
List<? extends CodeLens> codeLenses = harness.getCodeLenses(openedDoc);
|
||||
|
||||
assertEquals(4, codeLenses.size());
|
||||
|
||||
assertTrue(containsCodeLens(codeLenses, "@/hello -- GET", 25, 29, 25, 34));
|
||||
assertTrue(containsCodeLens(codeLenses, "@/echo -- POST", 30, 29, 30, 33));
|
||||
assertTrue(containsCodeLens(codeLenses, "@/quotes -- GET", 35, 29, 35, 41));
|
||||
assertTrue(containsCodeLens(codeLenses, "@/quotes -- GET", 41, 29, 41, 40));
|
||||
}
|
||||
|
||||
private boolean containsCodeLens(List<? extends CodeLens> codeLenses, String commandTitle, int startLine, int startPosition, int endLine, int endPosition) {
|
||||
for (CodeLens codeLens : codeLenses) {
|
||||
Command command = codeLens.getCommand();
|
||||
Range range = codeLens.getRange();
|
||||
if (command.getTitle().equals(commandTitle)
|
||||
&& range.getStart().getLine() == startLine
|
||||
&& range.getStart().getCharacter() == startPosition
|
||||
&& range.getEnd().getLine() == endLine
|
||||
&& range.getEnd().getCharacter() == endPosition) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user