Merge branch 'master' of git.labs.intellij.net:idea/community
[idea/community.git] / plugins / tasks / tasks-tests / test / com / intellij / tasks / TaskUiTest.java
1 /*
2  * Copyright 2000-2012 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.intellij.tasks;
17
18 import com.intellij.ide.ui.customization.CustomActionsSchema;
19 import com.intellij.openapi.actionSystem.*;
20 import com.intellij.openapi.actionSystem.impl.ActionToolbarImpl;
21 import com.intellij.tasks.actions.SwitchTaskCombo;
22 import com.intellij.tasks.config.TaskSettings;
23 import com.intellij.testFramework.IdeaTestCase;
24 import com.intellij.testFramework.TestActionEvent;
25 import com.intellij.testFramework.fixtures.CodeInsightFixtureTestCase;
26
27 /**
28  * @author Dmitry Avdeev
29  *         Date: 3/23/12
30  */
31 public class TaskUiTest extends CodeInsightFixtureTestCase {
32
33   public void testTaskComboVisible() throws Exception {
34
35     SwitchTaskCombo combo = null;
36     ActionGroup group = (ActionGroup)CustomActionsSchema.getInstance().getCorrectedAction(IdeActions.GROUP_MAIN_TOOLBAR);
37     ActionToolbarImpl toolbar = (ActionToolbarImpl)ActionManager.getInstance().createActionToolbar(ActionPlaces.MAIN_TOOLBAR, group, true);
38     AnAction[] children = group.getChildren(new TestActionEvent());
39     for (AnAction child : children) {
40       if (child instanceof ActionGroup) {
41         AnAction[] actions = ((ActionGroup)child).getChildren(new TestActionEvent());
42         for (AnAction action : actions) {
43           if (action instanceof SwitchTaskCombo) {
44             combo = (SwitchTaskCombo)action;
45           }
46         }
47       }
48     }
49
50     TaskManager manager = TaskManager.getManager(getProject());
51     LocalTask defaultTask = manager.getActiveTask();
52     assertTrue(defaultTask.isDefault());
53     assertEquals(defaultTask.getCreated(), defaultTask.getUpdated());
54
55     Presentation presentation = doTest(combo, toolbar);
56     assertFalse(presentation.isVisible());
57
58     try {
59       TaskSettings.getInstance().ALWAYS_DISPLAY_COMBO = true;
60       presentation = doTest(combo, toolbar);
61       assertTrue(presentation.isVisible());
62     }
63     finally {
64       TaskSettings.getInstance().ALWAYS_DISPLAY_COMBO = false;
65     }
66
67     LocalTask task = manager.createLocalTask("test");
68     manager.activateTask(task, false);
69
70     presentation = doTest(combo, toolbar);
71     assertTrue(presentation.isVisible());
72
73     manager.activateTask(defaultTask, false);
74     task = manager.getActiveTask();
75     assertTrue(task.isDefault());
76
77     presentation = doTest(combo, toolbar);
78     if (!presentation.isVisible()) {
79       LocalTask activeTask = manager.getActiveTask();
80       System.out.println(activeTask);
81       System.out.println(activeTask.getCreated());
82       System.out.println(activeTask.getUpdated());
83       fail();
84     }
85   }
86
87   private static Presentation doTest(AnAction action, ActionToolbarImpl toolbar) {
88     TestActionEvent event = new TestActionEvent(toolbar.getPresentation(action));
89     action.update(event);
90     return event.getPresentation();
91   }
92
93   @SuppressWarnings("JUnitTestCaseWithNonTrivialConstructors")
94   public TaskUiTest() {
95     IdeaTestCase.initPlatformPrefix();
96   }
97 }