3af2d7c7b5c1027b3d5336d518a77d2524646f54
[idea/community.git] / plugins / tasks / tasks-tests / test / com / intellij / tasks / TaskCompletionTest.java
1 package com.intellij.tasks;
2
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;
13
14 import java.util.Arrays;
15
16 /**
17  * @author Dmitry Avdeev
18  */
19 public class TaskCompletionTest extends LightCodeInsightFixtureTestCase {
20
21   public void testTaskCompletion() throws Exception {
22     doTest("<caret>", "TEST-001: Test task<caret>");
23   }
24
25   public void testPrefix() throws Exception {
26     doTest("TEST-<caret>", "TEST-001: Test task<caret>");
27   }
28
29   public void testSecondWord() throws Exception {
30     doTest("my TEST-<caret>", "my TEST-001: Test task<caret>");
31   }
32
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);
39   }
40
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());
46   }
47
48   public void testSIOOBE() throws Exception {
49     doTest("  <caret>    my", "  TEST-001: Test task    my");
50   }
51
52   private void doTest(String text, String after) {
53     configureFile(text);
54     configureRepository(new LocalTaskImpl("TEST-001", "Test task"));
55     myFixture.completeBasic();
56     myFixture.checkResult(after);
57   }
58
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());
64
65   }
66
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;
71   }
72 }