blob: 7b9502b3897ca542017ad6abc29e3836cb5763c9 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2011 Tasktop Technologies and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* https://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Tasktop Technologies - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.tasks.tests.ui;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
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.commons.sdk.util.UiTestUtil;
import org.eclipse.mylyn.internal.tasks.core.AbstractTask;
import org.eclipse.mylyn.internal.tasks.core.LocalTask;
import org.eclipse.mylyn.internal.tasks.core.TaskActivityUtil;
import org.eclipse.mylyn.internal.tasks.core.TaskCategory;
import org.eclipse.mylyn.internal.tasks.core.TaskList;
import org.eclipse.mylyn.internal.tasks.ui.AbstractTaskListFilter;
import org.eclipse.mylyn.internal.tasks.ui.TaskWorkingSetFilter;
import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin;
import org.eclipse.mylyn.internal.tasks.ui.views.TaskListInterestFilter;
import org.eclipse.mylyn.internal.tasks.ui.views.TaskListView;
import org.eclipse.mylyn.internal.tasks.ui.workingsets.TaskWorkingSetUpdater;
import org.eclipse.mylyn.tasks.tests.TaskTestUtil;
import org.eclipse.mylyn.tasks.ui.TasksUiUtil;
import org.eclipse.ui.IWorkingSet;
import org.eclipse.ui.IWorkingSetManager;
import org.eclipse.ui.internal.Workbench;
/**
* @author Mik Kersten
*/
public class TaskListFilterTest extends TestCase {
private TaskListView view;
private Set<AbstractTaskListFilter> previousFilters;
private AbstractTask taskCompleted;
private AbstractTask taskIncomplete;
private AbstractTask taskOverdue;
private AbstractTask taskDueToday;
private AbstractTask taskCompletedToday;
private AbstractTask taskScheduledLastWeek;
private AbstractTask taskCompleteAndOverdue;
private TaskList taskList;
@Override
protected void setUp() throws Exception {
TaskTestUtil.resetTaskListAndRepositories();
view = (TaskListView) TasksUiUtil.openTasksViewInActivePerspective();
assertNotNull(view);
previousFilters = view.getFilters();
view.clearFilters();
taskList = TasksUiPlugin.getTaskList();
taskCompleted = new LocalTask("1", "completed");
taskCompleted.setCompletionDate(TaskActivityUtil.snapForwardNumDays(Calendar.getInstance(), -1).getTime());
taskList.addTask(taskCompleted);
taskIncomplete = new LocalTask("2", "t-incomplete");
taskList.addTask(taskIncomplete);
taskOverdue = new LocalTask("3", "t-overdue");
taskOverdue.setScheduledForDate(TaskActivityUtil.getCurrentWeek().getToday().previous());
taskList.addTask(taskOverdue);
taskDueToday = new LocalTask("4", "t-today");
taskDueToday.setScheduledForDate(TaskActivityUtil.getCurrentWeek().getToday());
taskList.addTask(taskDueToday);
taskCompletedToday = new LocalTask("5", "t-donetoday");
taskCompletedToday.setScheduledForDate(TaskActivityUtil.getCurrentWeek().getToday());
taskCompletedToday.setCompletionDate(new Date());
taskList.addTask(taskCompletedToday);
taskScheduledLastWeek = new LocalTask("6", "t-scheduledLastWeek");
taskList.addTask(taskScheduledLastWeek);
TasksUiPlugin.getTaskActivityManager().setScheduledFor(taskScheduledLastWeek,
TaskActivityUtil.getCurrentWeek().previous());
taskCompleteAndOverdue = new LocalTask("7", "t-completeandoverdue");
taskList.addTask(taskCompleteAndOverdue);
Calendar cal = TaskActivityUtil.getCalendar();
cal.add(Calendar.DAY_OF_MONTH, -1);
TasksUiPlugin.getTaskActivityManager().setDueDate(taskCompleteAndOverdue, cal.getTime());
taskCompleteAndOverdue.setCompletionDate(cal.getTime());
}
@Override
protected void tearDown() throws Exception {
TaskWorkingSetUpdater.applyWorkingSetsToAllWindows(new HashSet<IWorkingSet>(0));
view.clearFilters();
for (AbstractTaskListFilter filter : previousFilters) {
view.addFilter(filter);
}
}
public void testSearchScheduledWorkingSet() throws InterruptedException {
TaskCategory category = new TaskCategory("category");
taskList.addCategory(category);
taskList.addTask(taskOverdue, category);
taskList.addTask(taskIncomplete, category);
view.getViewer().refresh();
view.getViewer().expandAll();
List<Object> items = UiTestUtil.getAllData(view.getViewer().getTree());
assertTrue(items.contains(taskCompleted));
assertTrue(items.contains(taskOverdue));
IWorkingSetManager workingSetManager = Workbench.getInstance().getWorkingSetManager();
IWorkingSet workingSet = workingSetManager.createWorkingSet("Task Working Set", new IAdaptable[] { category });
workingSet.setId(TaskWorkingSetUpdater.ID_TASK_WORKING_SET);
assertTrue(Arrays.asList(workingSet.getElements()).contains(category));
workingSetManager.addWorkingSet(workingSet);
TaskWorkingSetFilter workingSetFilter = new TaskWorkingSetFilter();
view.addFilter(workingSetFilter);
HashSet<IWorkingSet> workingSets = new HashSet<IWorkingSet>(1);
workingSets.add(workingSet);
TaskWorkingSetUpdater.applyWorkingSetsToAllWindows(workingSets);
view.getFilteredTree().setFilterText("over");
view.getFilteredTree().getRefreshPolicy().internalForceRefresh();
items = UiTestUtil.getAllData(view.getViewer().getTree());
assertFalse(items.contains(taskCompleted));
assertTrue(items.contains(taskOverdue));
workingSets = new HashSet<IWorkingSet>(0);
view.removeFilter(workingSetFilter);
TaskWorkingSetUpdater.applyWorkingSetsToAllWindows(workingSets);
taskList.removeFromContainer(category, taskOverdue);
taskList.removeFromContainer(category, taskIncomplete);
view.getFilteredTree().setFilterText("");
view.getFilteredTree().getRefreshPolicy().internalForceRefresh();
}
public void testInterestFilter() {
TaskListInterestFilter interestFilter = new TaskListInterestFilter();
view.addFilter(interestFilter);
view.getViewer().refresh();
view.getViewer().expandAll();
List<Object> items = UiTestUtil.getAllData(view.getViewer().getTree());
assertFalse(items.contains(taskCompleted));
assertFalse(items.contains(taskIncomplete));
assertTrue(items.contains(taskOverdue));
assertTrue(items.contains(taskDueToday));
assertTrue(items.contains(taskCompletedToday));
assertTrue(items.contains(taskScheduledLastWeek));
assertFalse(items.contains(taskCompleteAndOverdue));
view.removeFilter(interestFilter);
}
public void testNoFilters() {
assertEquals("should have working set filter and orphan/archive filter: " + view.getFilters(), 2,
view.getFilters().size());
view.getViewer().refresh();
assertEquals("should only have Uncategorized folder present in stock task list: "
+ view.getViewer().getTree().getItems(), 1, view.getViewer().getTree().getItemCount());
}
}