blob: a0fdee05eeb4ef2c65602339c8589c0bad0d1351 [file] [log] [blame]
package org.jetbrains.idea.maven.dom;
import com.intellij.codeInsight.completion.CompletionType;
import com.intellij.codeInsight.lookup.LookupElement;
import java.io.IOException;
import java.util.Arrays;
/**
* @author Sergey Evdokimov
*/
public class MavenDependencySmartCompletionTest extends MavenDomWithIndicesTestCase {
public void testCompletion() throws IOException {
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>" +
"<dependencies>" +
" <dependency>" +
" <caret>" +
" </dependency>" +
"</dependencies>");
assertCompletionVariantsInclude(myProjectPom, "junit:junit");
}
public void testInsertDependency() throws IOException {
createProjectPom("<groupId>test</groupId>\n" +
"<artifactId>project</artifactId>\n" +
"<version>1</version>\n" +
"<dependencies>\n" +
" <dependency>ju<caret></dependency>\n" +
"</dependencies>\n");
configTest(myProjectPom);
myFixture.complete(CompletionType.SMART);
assertContain(myFixture.getLookupElementStrings(), "4.0", "3.8.2");
myFixture.checkResult(createPomXml("<groupId>test</groupId>\n" +
"<artifactId>project</artifactId>\n" +
"<version>1</version>\n" +
"<dependencies>\n" +
" <dependency>\n" +
" <groupId>junit</groupId>\n" +
" <artifactId>junit</artifactId>\n" +
" <version><caret></version>\n" +
" </dependency>\n" +
"</dependencies>\n"));
}
public void testInsertManagedDependency() throws IOException {
createProjectPom("<groupId>test</groupId>\n" +
"<artifactId>project</artifactId>\n" +
"<version>1</version>\n" +
"<dependencyManagement>\n" +
" <dependencies>\n" +
" <dependency>\n" +
" <groupId>junit</groupId>\n" +
" <artifactId>junit</artifactId>\n" +
" <version>4.0</version>\n" +
" </dependency>\n" +
" </dependencies>\n" +
"</dependencyManagement>\n" +
"<dependencies>\n" +
" <dependency>ju<caret></dependency>\n" +
"</dependencies>\n");
configTest(myProjectPom);
myFixture.complete(CompletionType.SMART);
myFixture.checkResult(createPomXml("<groupId>test</groupId>\n" +
"<artifactId>project</artifactId>\n" +
"<version>1</version>\n" +
"<dependencyManagement>\n" +
" <dependencies>\n" +
" <dependency>\n" +
" <groupId>junit</groupId>\n" +
" <artifactId>junit</artifactId>\n" +
" <version>4.0</version>\n" +
" </dependency>\n" +
" </dependencies>\n" +
"</dependencyManagement>\n" +
"<dependencies>\n" +
" <dependency>\n" +
" <groupId>junit</groupId>\n" +
" <artifactId>junit</artifactId>\n" +
" </dependency>\n" +
"</dependencies>\n"));
}
public void testInsertManagedDependencyWithTypeAndClassifier() throws IOException {
createProjectPom("<groupId>test</groupId>\n" +
"<artifactId>project</artifactId>\n" +
"<version>1</version>\n" +
"<properties>\n" +
" <junitClassifier>sources</junitClassifier>\n" +
" <junitType>test-jar</junitType>\n" +
"</properties>\n" +
"<dependencyManagement>\n" +
" <dependencies>\n" +
" <dependency>\n" +
" <groupId>junit</groupId>\n" +
" <artifactId>junit</artifactId>\n" +
" <version>4.0</version>\n" +
" <type>${junitType}</type>\n" +
" <classifier>${junitClassifier}</classifier>\n" +
" </dependency>\n" +
" </dependencies>\n" +
"</dependencyManagement>\n" +
"<dependencies>\n" +
" <dependency>ju<caret></dependency>\n" +
"</dependencies>\n");
configTest(myProjectPom);
myFixture.complete(CompletionType.SMART);
myFixture.checkResult(createPomXml("<groupId>test</groupId>\n" +
"<artifactId>project</artifactId>\n" +
"<version>1</version>\n" +
"<properties>\n" +
" <junitClassifier>sources</junitClassifier>\n" +
" <junitType>test-jar</junitType>\n" +
"</properties>\n" +
"<dependencyManagement>\n" +
" <dependencies>\n" +
" <dependency>\n" +
" <groupId>junit</groupId>\n" +
" <artifactId>junit</artifactId>\n" +
" <version>4.0</version>\n" +
" <type>${junitType}</type>\n" +
" <classifier>${junitClassifier}</classifier>\n" +
" </dependency>\n" +
" </dependencies>\n" +
"</dependencyManagement>\n" +
"<dependencies>\n" +
" <dependency>\n" +
" <groupId>junit</groupId>\n" +
" <artifactId>junit</artifactId>\n" +
" <type>${junitType}</type>\n" +
" <classifier>${junitClassifier}</classifier>\n" +
" </dependency>\n" +
"</dependencies>\n"));
}
public void testCompletionArtifactIdThenVersion() throws IOException {
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>");
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>\n" +
"<dependencies>\n" +
" <dependency>\n" +
" <artifactId>juni<caret></artifactId>\n" +
" </dependency>\n" +
"</dependencies>\n");
myFixture.configureFromExistingVirtualFile(myProjectPom);
LookupElement[] elements = myFixture.completeBasic();
assertSize(1, elements);
myFixture.type('\n');
myFixture.checkResult(createPomXml("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>\n" +
"<dependencies>\n" +
" <dependency>\n" +
" <groupId>junit</groupId>\n" +
" <artifactId>junit</artifactId>\n" +
" <version><caret></version>\n" +
" </dependency>\n" +
"</dependencies>\n"));
myFixture.getLookupElementStrings().containsAll(Arrays.asList("3.8.1", "4.0"));
}
public void testCompletionArtifactIdThenGroupIdThenInsertVersion() throws IOException {
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>");
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>\n" +
"<dependencies>\n" +
" <dependency>\n" +
" <artifactId>as<caret></artifactId>\n" +
" </dependency>\n" +
"</dependencies>\n");
myFixture.configureFromExistingVirtualFile(myProjectPom);
LookupElement[] elements = myFixture.completeBasic();
assertSize(1, elements);
myFixture.type('\n');
assertUnorderedElementsAreEqual(myFixture.getLookupElementStrings(), "asm", "org.ow2.asm");
myFixture.type("org\n");
myFixture.checkResult(createPomXml("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>\n" +
"<dependencies>\n" +
" <dependency>\n" +
" <groupId>org.ow2.asm</groupId>\n" +
" <artifactId>asm</artifactId>\n" +
" <version>4.1</version>\n" +
" </dependency>\n" +
"</dependencies>\n"));
}
public void testCompletionArtifactIdThenGroupIdThenCompleteVersion() throws IOException {
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>");
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>\n" +
"<dependencies>\n" +
" <dependency>\n" +
" <artifactId>as<caret></artifactId>\n" +
" </dependency>\n" +
"</dependencies>\n");
myFixture.configureFromExistingVirtualFile(myProjectPom);
LookupElement[] elements = myFixture.completeBasic();
assertSize(1, elements);
myFixture.type('\n');
assertUnorderedElementsAreEqual(myFixture.getLookupElementStrings(), "asm", "org.ow2.asm");
myFixture.type("asm\n");
myFixture.checkResult(createPomXml("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>\n" +
"<dependencies>\n" +
" <dependency>\n" +
" <groupId>asm</groupId>\n" +
" <artifactId>asm</artifactId>\n" +
" <version><caret></version>\n" +
" </dependency>\n" +
"</dependencies>\n"));
myFixture.getLookupElementStrings().equals(Arrays.asList("3.3", "3.3.1"));
}
public void testCompletionArtifactIdWithFullInsert() throws IOException {
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>");
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>\n" +
"<dependencies>\n" +
" <dependency>\n" +
" <artifactId>common-i<caret></artifactId>\n" +
" </dependency>\n" +
"</dependencies>\n");
myFixture.configureFromExistingVirtualFile(myProjectPom);
LookupElement[] elements = myFixture.completeBasic();
assertSize(1, elements);
myFixture.type('\n');
myFixture.checkResult(createPomXml("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>\n" +
"<dependencies>\n" +
" <dependency>\n" +
" <groupId>commons-io</groupId>\n" +
" <artifactId>commons-io</artifactId>\n" +
" <version>2.4</version>\n" +
" </dependency>\n" +
"</dependencies>\n"));
}
public void testCompletionArtifactIdInsideManagedDependency() throws IOException {
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>");
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>\n" +
"<dependencyManagement>\n" +
" <dependencies>\n" +
" <dependency>\n" +
" <artifactId>commons-i<caret></artifactId>\n" +
" </dependency>\n" +
" </dependencies>\n" +
"</dependencyManagement>\n");
myFixture.configureFromExistingVirtualFile(myProjectPom);
LookupElement[] elements = myFixture.completeBasic();
assertSize(1, elements);
myFixture.type('\n');
myFixture.checkResult(createPomXml("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>\n" +
"<dependencyManagement>\n" +
" <dependencies>\n" +
" <dependency>\n" +
" <groupId>commons-io</groupId>\n" +
" <artifactId>commons-io</artifactId>\n" +
" <version>2.4</version>\n" +
" </dependency>\n" +
" </dependencies>\n" +
"</dependencyManagement>\n"));
}
public void testCompletionArtifactIdWithManagedDependency() throws IOException {
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>\n" +
"" +
" <dependencyManagement>\n" +
" <dependencies>\n" +
" <dependency>\n" +
" <groupId>commons-io</groupId>\n" +
" <artifactId>commons-io</artifactId>\n" +
" <version>2.4</version>\n" +
" </dependency>\n" +
" </dependencies>\n" +
" </dependencyManagement>\n");
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>\n" +
" <dependencyManagement>\n" +
" <dependencies>\n" +
" <dependency>\n" +
" <groupId>commons-io</groupId>\n" +
" <artifactId>commons-io</artifactId>\n" +
" <version>2.4</version>\n" +
" </dependency>\n" +
" </dependencies>\n" +
" </dependencyManagement>\n" +
"<dependencies>\n" +
" <dependency>\n" +
" <artifactId>common-i<caret></artifactId>\n" +
" </dependency>\n" +
"</dependencies>\n");
myFixture.configureFromExistingVirtualFile(myProjectPom);
LookupElement[] elements = myFixture.completeBasic();
assertSize(1, elements);
myFixture.type('\n');
myFixture.checkResult(createPomXml("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>\n" +
" <dependencyManagement>\n" +
" <dependencies>\n" +
" <dependency>\n" +
" <groupId>commons-io</groupId>\n" +
" <artifactId>commons-io</artifactId>\n" +
" <version>2.4</version>\n" +
" </dependency>\n" +
" </dependencies>\n" +
" </dependencyManagement>\n" +
"<dependencies>\n" +
" <dependency>\n" +
" <groupId>commons-io</groupId>\n" +
" <artifactId>commons-io</artifactId>\n" +
" </dependency>\n" +
"</dependencies>\n"
));
}
public void testCompletionGroupIdWithManagedDependencyWithTypeAndClassifier() throws IOException {
importProject("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>\n" +
"<properties>\n" +
" <ioClassifier>ccc</ioClassifier>" +
" <ioType>ttt</ioType>" +
"</properties>\n" +
"" +
"<dependencyManagement>\n" +
" <dependencies>\n" +
" <dependency>\n" +
" <groupId>commons-io</groupId>\n" +
" <artifactId>commons-io</artifactId>\n" +
" <classifier>${ioClassifier}</classifier>\n" +
" <type>${ioType}</type>\n" +
" <version>2.4</version>\n" +
" </dependency>\n" +
" </dependencies>\n" +
"</dependencyManagement>\n");
createProjectPom("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>\n" +
"<dependencyManagement>\n" +
" <dependencies>\n" +
" <dependency>\n" +
" <groupId>commons-io</groupId>\n" +
" <artifactId>commons-io</artifactId>\n" +
" <classifier>${ioClassifier}</classifier>\n" +
" <type>${ioType}</type>\n" +
" <version>2.4</version>\n" +
" </dependency>\n" +
" </dependencies>\n" +
"</dependencyManagement>\n" +
"<dependencies>\n" +
" <dependency>\n" +
" <groupId>commons-i<caret></groupId>\n" +
" <artifactId>commons-io</artifactId>\n" +
" </dependency>\n" +
"</dependencies>\n");
myFixture.configureFromExistingVirtualFile(myProjectPom);
LookupElement[] elements = myFixture.complete(CompletionType.SMART);
assertNull(elements);
// assertSize(1, elements);
// myFixture.type('\n');
myFixture.checkResult(createPomXml("<groupId>test</groupId>" +
"<artifactId>project</artifactId>" +
"<version>1</version>\n" +
"<dependencyManagement>\n" +
" <dependencies>\n" +
" <dependency>\n" +
" <groupId>commons-io</groupId>\n" +
" <artifactId>commons-io</artifactId>\n" +
" <classifier>${ioClassifier}</classifier>\n" +
" <type>${ioType}</type>\n" +
" <version>2.4</version>\n" +
" </dependency>\n" +
" </dependencies>\n" +
"</dependencyManagement>\n" +
"<dependencies>\n" +
" <dependency>\n" +
" <groupId>commons-io</groupId>\n" +
" <artifactId>commons-io</artifactId>\n" +
" <type>${ioType}</type>\n" +
" <classifier>${ioClassifier}</classifier>\n" +
" </dependency>\n" +
"</dependencies>\n"
));
}
}