blob: 5e9d7ad3a835f3f6768ad54ba2b2c4a6a48db7ca [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2014 Frank Becker and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Frank Becker - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.tasks.tests;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import junit.framework.TestCase;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.mylyn.internal.tasks.core.AbstractTask;
import org.eclipse.mylyn.internal.tasks.core.AbstractTaskContainer;
import org.eclipse.mylyn.internal.tasks.core.TaskActivationHistory;
import org.eclipse.mylyn.internal.tasks.core.TaskActivityManager;
import org.eclipse.mylyn.internal.tasks.core.TaskList;
import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin;
import org.eclipse.mylyn.internal.tasks.ui.actions.ActivateTaskHistoryDropDownAction;
import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal;
import org.eclipse.mylyn.internal.tasks.ui.workingsets.TaskWorkingSetUpdater;
import org.eclipse.mylyn.tasks.tests.connector.MockRepositoryQuery;
import org.eclipse.mylyn.tasks.ui.TasksUi;
import org.eclipse.ui.IWorkingSet;
import org.eclipse.ui.IWorkingSetManager;
import org.eclipse.ui.PlatformUI;
/**
* @author Frank Becker
* @author Wesley Coelho
*/
public class TaskActivationHistoryTest extends TestCase {
private TaskActivationHistory history;
private TaskList taskList;
private AbstractTask task1;
private AbstractTask task2;
private AbstractTask task3;
private AbstractTask task4;
private AbstractTask task5;
private ActivateTaskHistoryDropDownAction previousTaskAction;
private TaskActivityManager taskActivityManager;
@Override
protected void setUp() throws Exception {
taskActivityManager = TasksUiPlugin.getTaskActivityManager();
history = taskActivityManager.getTaskActivationHistory();
taskList = TasksUiPlugin.getTaskList();
taskActivityManager.deactivateActiveTask();
taskActivityManager.clear();
// ContextCorePlugin.getContextManager().resetActivityMetaContext();
TaskTestUtil.resetTaskList();
task1 = TasksUiInternal.createNewLocalTask("task 1");
taskList.addTask(task1);
task2 = TasksUiInternal.createNewLocalTask("task 2");
taskList.addTask(task2);
task3 = TasksUiInternal.createNewLocalTask("task 3");
taskList.addTask(task3);
task4 = TasksUiInternal.createNewLocalTask("task 4");
taskList.addTask(task4);
task5 = TasksUiInternal.createNewLocalTask("task 5");
taskList.addTask(task5);
previousTaskAction = new ActivateTaskHistoryDropDownAction();
}
@Override
protected void tearDown() throws Exception {
TaskTestUtil.resetTaskList();
TaskWorkingSetUpdater.applyWorkingSetsToAllWindows(new HashSet<IWorkingSet>(0));
}
public void testWithWorkingSet() {
MockRepositoryQuery query1 = new MockRepositoryQuery("Query 1");
MockRepositoryQuery query2 = new MockRepositoryQuery("Query 2");
AbstractTask task11 = TasksUiInternal.createNewLocalTask("Query1 Task 1");
AbstractTask task12 = TasksUiInternal.createNewLocalTask("Query1 Task 2");
AbstractTask task21 = TasksUiInternal.createNewLocalTask("Query2 Task 1");
AbstractTask task22 = TasksUiInternal.createNewLocalTask("Query2 Task 2");
taskList.addQuery(query1);
taskList.addQuery(query2);
createWorkingSet(query1);
TasksUi.getTaskActivityManager().activateTask(task11);
history.addTask(task11);
taskList.addTask(task11, query1);
TasksUi.getTaskActivityManager().activateTask(task12);
history.addTask(task12);
taskList.addTask(task12, query1);
TasksUi.getTaskActivityManager().activateTask(task21);
history.addTask(task21);
taskList.addTask(task21, query2);
TasksUi.getTaskActivityManager().activateTask(task22);
history.addTask(task22);
taskList.addTask(task22, query2);
List<AbstractTask> prevHistoryList = history.getPreviousTasks();
// Check that the previous history list looks right
assertTrue(prevHistoryList.size() >= 3);
assertTrue(prevHistoryList.get(prevHistoryList.size() - 1) == task22);
assertTrue(prevHistoryList.get(prevHistoryList.size() - 2) == task21);
assertTrue(prevHistoryList.get(prevHistoryList.size() - 3) == task12);
assertTrue(prevHistoryList.get(prevHistoryList.size() - 4) == task11);
prevHistoryList = history.getPreviousTasks(TasksUiInternal.getContainersFromWorkingSet(TaskWorkingSetUpdater.getActiveWorkingSets(PlatformUI.getWorkbench()
.getActiveWorkbenchWindow())));
// Check that the previous history list looks right
assertTrue(prevHistoryList.size() >= 2);
assertTrue(prevHistoryList.get(prevHistoryList.size() - 1) == task12);
assertTrue(prevHistoryList.get(prevHistoryList.size() - 2) == task11);
prevHistoryList = history.getPreviousTasks(new HashSet<AbstractTaskContainer>());
// Check that the previous history list looks right
assertTrue(prevHistoryList.size() >= 3);
assertTrue(prevHistoryList.get(prevHistoryList.size() - 1) == task22);
assertTrue(prevHistoryList.get(prevHistoryList.size() - 2) == task21);
assertTrue(prevHistoryList.get(prevHistoryList.size() - 3) == task12);
assertTrue(prevHistoryList.get(prevHistoryList.size() - 4) == task11);
}
private IWorkingSet createWorkingSet(IAdaptable element) {
IWorkingSetManager workingSetManager1 = PlatformUI.getWorkbench().getWorkingSetManager();
IWorkingSet workingSet = workingSetManager1.createWorkingSet("Task Working Set", new IAdaptable[] { element });
workingSet.setId(TaskWorkingSetUpdater.ID_TASK_WORKING_SET);
assertTrue(Arrays.asList(workingSet.getElements()).contains(element));
Set<IWorkingSet> sets = TaskWorkingSetUpdater.getActiveWorkingSets(PlatformUI.getWorkbench()
.getActiveWorkbenchWindow());
sets.add(workingSet);
TaskWorkingSetUpdater.applyWorkingSetsToAllWindows(sets);
return workingSet;
}
/**
* Tests the next task and previous task navigation.
*/
public void testBasicHistoryNavigation() {
// NOTE: legacy test
TasksUi.getTaskActivityManager().activateTask(task1);
history.addTask(task1);
TasksUi.getTaskActivityManager().activateTask(task2);
history.addTask(task2);
TasksUi.getTaskActivityManager().activateTask(task3);
history.addTask(task3);
assertTrue(task3.isActive());
assertFalse(task2.isActive());
assertFalse(task1.isActive());
// order 1 (2) 3
previousTaskAction.run();
// order (1) 3 2
assertEquals(task2, taskActivityManager.getActiveTask());
assertTrue(task2.isActive());
previousTaskAction.run();
// order (1) 2 3
assertEquals(task1, taskActivityManager.getActiveTask());
assertTrue(task1.isActive());
previousTaskAction.run();
// order (1) 2 3
assertEquals(task1, taskActivityManager.getActiveTask());
assertTrue(task1.isActive());
// taskView.getPreviousTaskAction().run();
// assertTrue(task1.isActive());
//
// taskView.getPreviousTaskAction().run();
// assertTrue(task1.isActive());
// taskView.getNextTaskAction().run();
// assertTrue(task2.isActive());
//
// taskView.getNextTaskAction().run();
// assertTrue(task3.isActive());
//
// taskView.getNextTaskAction().run();
// assertTrue(task3.isActive());
//
// taskView.getPreviousTaskAction().run();
// assertTrue(task2.isActive());
//
// taskView.getNextTaskAction().run();
// assertTrue(task3.isActive());
//
// TasksUi.getTaskActivityManager().activateTask(task4);
// history.addTask(task4); // Simulate clicking on it rather
// // than navigating next or previous
// assertTrue(task4.isActive());
//
// taskView.getNextTaskAction().run();
// assertTrue(task4.isActive());
//
// taskView.getPreviousTaskAction().run();
// assertTrue(task3.isActive());
//
// taskView.getNextTaskAction().run();
// assertTrue(task4.isActive());
}
/**
* Tests navigation to previous/next tasks that are chosen from a list rather than being sequentially navigated
*/
public void testArbitraryHistoryNavigation() {
// Simulate activating the tasks by clicking rather than
// navigating previous/next
TasksUi.getTaskActivityManager().activateTask(task1);
history.addTask(task1);
TasksUi.getTaskActivityManager().activateTask(task2);
history.addTask(task2);
TasksUi.getTaskActivityManager().activateTask(task3);
history.addTask(task3);
TasksUi.getTaskActivityManager().activateTask(task4);
history.addTask(task4);
assertTrue(task4.isActive());
//TaskActivationHistory taskHistory = taskView.getTaskActivationHistory();
List<AbstractTask> prevHistoryList = history.getPreviousTasks();
// Check that the previous history list looks right
assertTrue(prevHistoryList.size() >= 3);
assertEquals(task3, prevHistoryList.get(prevHistoryList.size() - 2));
assertEquals(task2, prevHistoryList.get(prevHistoryList.size() - 3));
assertEquals(task1, prevHistoryList.get(prevHistoryList.size() - 4));
// Get a task from the list and activate it
TasksUi.getTaskActivityManager().activateTask(task2);
assertEquals(task2, taskActivityManager.getActiveTask());
assertTrue(task2.isActive());
// Now check that the next and prev lists look right
prevHistoryList = history.getPreviousTasks();
assertEquals(task2, prevHistoryList.get(prevHistoryList.size() - 1));
assertEquals(task4, prevHistoryList.get(prevHistoryList.size() - 2));
assertEquals(task1, prevHistoryList.get(prevHistoryList.size() - 4));
assertEquals(task3, prevHistoryList.get(prevHistoryList.size() - 3));
// Activation of task outside of history navigation tool
history.addTask(task3);
prevHistoryList = history.getPreviousTasks();
assertEquals(task3, prevHistoryList.get(prevHistoryList.size() - 1));
assertEquals(task2, prevHistoryList.get(prevHistoryList.size() - 2));
assertEquals(task4, prevHistoryList.get(prevHistoryList.size() - 3));
assertEquals(task1, prevHistoryList.get(prevHistoryList.size() - 4));
// Pick a task from drop down history
TasksUi.getTaskActivityManager().activateTask(task4);
assertEquals(task4, taskActivityManager.getActiveTask());
assertTrue(task4.isActive());
prevHistoryList = history.getPreviousTasks();
assertEquals(task4, prevHistoryList.get(prevHistoryList.size() - 1));
assertEquals(task3, prevHistoryList.get(prevHistoryList.size() - 2));
assertEquals(task2, prevHistoryList.get(prevHistoryList.size() - 3));
assertEquals(task1, prevHistoryList.get(prevHistoryList.size() - 4));
// Hit previous task button
previousTaskAction.run();
assertEquals(task3, taskActivityManager.getActiveTask());
assertTrue(task3.isActive());
prevHistoryList = history.getPreviousTasks();
assertEquals(task3, prevHistoryList.get(prevHistoryList.size() - 1));
assertEquals(task4, prevHistoryList.get(prevHistoryList.size() - 2));
assertEquals(task2, prevHistoryList.get(prevHistoryList.size() - 3));
assertEquals(task1, prevHistoryList.get(prevHistoryList.size() - 4));
TasksUi.getTaskActivityManager().deactivateTask(task3);
// List<ITask> nextHistoryList = taskHistory.getNextTasks();
// assertTrue(nextHistoryList.get(0) == task3);
// assertTrue(nextHistoryList.get(1) == task4);
//
// // Navigate to a next item
// NextTaskDropDownAction nextAction = new
// NextTaskDropDownAction(taskView, taskHistory);
// navigateAction = nextAction.new TaskNavigateAction(task4);
// navigateAction.run();
// taskHistory.navigatedToTask(task4);
//
// assertTrue(task4.isActive());
//
// // Check that the prev and next lists look right
// nextHistoryList = taskHistory.getNextTasks();
// prevHistoryList = taskHistory.getPreviousTasks();
// assertTrue(nextHistoryList.size() == 0);
// assertTrue(prevHistoryList.get(prevHistoryList.size() - 1) == task3);
// assertTrue(prevHistoryList.get(prevHistoryList.size() - 2) == task2);
// assertTrue(prevHistoryList.get(prevHistoryList.size() - 3) == task1);
//
// // Check that a deactivated task appears first on the history list
// TasksUi.getTaskActivityManager().activateTask(task5);
// (new TaskDeactivateAction()).run(task5);
// taskView.addTaskToHistory(task5);
// prevHistoryList = taskHistory.getPreviousTasks();
// assertTrue(prevHistoryList.get(prevHistoryList.size() - 1) == task5);
}
}