1 package com.intellij.tasks;
3 import com.intellij.codeInsight.completion.CompletionType;
4 import com.intellij.codeInsight.lookup.LookupElement;
5 import com.intellij.openapi.editor.Document;
6 import com.intellij.openapi.vcs.ui.CommitMessage;
7 import com.intellij.psi.PsiFile;
8 import com.intellij.tasks.impl.LocalTaskImpl;
9 import com.intellij.tasks.impl.TaskCompletionContributor;
10 import com.intellij.tasks.impl.TaskManagerImpl;
11 import com.intellij.testFramework.MapDataContext;
12 import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
14 import java.util.Arrays;
17 * @author Dmitry Avdeev
19 public class TaskCompletionTest extends LightCodeInsightFixtureTestCase {
21 public void testTaskCompletion() throws Exception {
22 doTest("<caret>", "TEST-001: Test task<caret>");
25 public void testPrefix() throws Exception {
26 doTest("TEST-<caret>", "TEST-001: Test task<caret>");
29 public void testSecondWord() throws Exception {
30 doTest("my TEST-<caret>", "my TEST-001: Test task<caret>");
33 public void testNumberCompletion() throws Exception {
34 configureFile("TEST-0<caret>");
35 configureRepository(new LocalTaskImpl("TEST-001", "Test task"), new LocalTaskImpl("TEST-002", "Test task 2"));
36 LookupElement[] elements = myFixture.complete(CompletionType.BASIC);
37 assertNotNull(elements);
38 assertEquals(2, elements.length);
41 public void testKeepOrder() throws Exception {
42 configureFile("<caret>");
43 configureRepository(new LocalTaskImpl("TEST-002", "Test task 2"), new LocalTaskImpl("TEST-001", "Test task 1"));
44 myFixture.complete(CompletionType.BASIC);
45 assertEquals(Arrays.asList("TEST-002", "TEST-001"), myFixture.getLookupElementStrings());
48 public void testSIOOBE() throws Exception {
49 doTest(" <caret> my", " TEST-001: Test task my");
52 private void doTest(String text, String after) {
54 configureRepository(new LocalTaskImpl("TEST-001", "Test task"));
55 myFixture.completeBasic();
56 myFixture.checkResult(after);
59 private void configureFile(String text) {
60 PsiFile psiFile = myFixture.configureByText("test.txt", text);
61 Document document = myFixture.getDocument(psiFile);
62 TaskCompletionContributor.installCompletion(document, getProject(), null, false);
63 document.putUserData(CommitMessage.DATA_CONTEXT_KEY, new MapDataContext());
67 private void configureRepository(LocalTaskImpl... tasks) {
68 TaskManagerImpl manager = (TaskManagerImpl)TaskManager.getManager(getProject());
69 manager.setRepositories(Arrays.asList(new TestRepository(tasks)));
70 manager.getState().updateEnabled = false;