running task tests on their own classpath
[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.UsefulTestCase;
13 import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
14
15 import java.util.Arrays;
16
17 /**
18  * @author Dmitry Avdeev
19  */
20 public class TaskCompletionTest extends LightCodeInsightFixtureTestCase {
21
22   public TaskCompletionTest() {
23     super(UsefulTestCase.IDEA_MARKER_CLASS, "PlatformLangXml");
24   }
25
26   public void testTaskCompletion() throws Exception {
27     doTest("<caret>", "TEST-001: Test task<caret>");
28   }
29
30   public void testPrefix() throws Exception {
31     doTest("TEST-<caret>", "TEST-001: Test task<caret>");
32   }
33
34   public void testSecondWord() throws Exception {
35     doTest("my TEST-<caret>", "my TEST-001: Test task<caret>");
36   }
37
38   public void testNumberCompletion() throws Exception {
39     configureFile("TEST-0<caret>");
40     configureRepository(new LocalTaskImpl("TEST-001", "Test task"), new LocalTaskImpl("TEST-002", "Test task 2"));
41     LookupElement[] elements = myFixture.complete(CompletionType.BASIC);
42     assertNotNull(elements);
43     assertEquals(2, elements.length);
44   }
45
46   public void testKeepOrder() throws Exception {
47     configureFile("<caret>");
48     configureRepository(new LocalTaskImpl("TEST-002", "Test task 2"), new LocalTaskImpl("TEST-001", "Test task 1"));
49     myFixture.complete(CompletionType.BASIC);
50     assertEquals(Arrays.asList("TEST-002", "TEST-001"), myFixture.getLookupElementStrings());
51   }
52
53   public void testSIOOBE() throws Exception {
54     doTest("  <caret>    my", "  TEST-001: Test task    my");
55   }
56
57   private void doTest(String text, String after) {
58     configureFile(text);
59     configureRepository(new LocalTaskImpl("TEST-001", "Test task"));
60     myFixture.completeBasic();
61     myFixture.checkResult(after);
62   }
63
64   private void configureFile(String text) {
65     PsiFile psiFile = myFixture.configureByText("test.txt", text);
66     Document document = myFixture.getDocument(psiFile);
67     TaskCompletionContributor.installCompletion(document, getProject(), null, false);
68     document.putUserData(CommitMessage.DATA_CONTEXT_KEY, new MapDataContext());
69
70   }
71
72   private void configureRepository(LocalTaskImpl... tasks) {
73     TaskManagerImpl manager = (TaskManagerImpl)TaskManager.getManager(getProject());
74     manager.setRepositories(Arrays.asList(new TestRepository(tasks)));
75     manager.getState().updateEnabled = false;
76   }
77 }