blob: 67be91efc23525cefed6260960d06b3aea8adb3d [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2007 Mylyn project committers 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
*******************************************************************************/
package org.eclipse.mylyn.tasks.tests;
import java.io.File;
import java.io.IOException;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import junit.framework.TestCase;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.mylyn.context.core.ContextCore;
import org.eclipse.mylyn.context.core.IInteractionContextManager;
import org.eclipse.mylyn.internal.context.core.ContextCorePlugin;
import org.eclipse.mylyn.internal.context.core.InteractionContext;
import org.eclipse.mylyn.internal.tasks.core.AbstractTask;
import org.eclipse.mylyn.internal.tasks.core.AbstractTaskCategory;
import org.eclipse.mylyn.internal.tasks.core.AbstractTaskContainer;
import org.eclipse.mylyn.internal.tasks.core.ITaskList;
import org.eclipse.mylyn.internal.tasks.core.LocalRepositoryConnector;
import org.eclipse.mylyn.internal.tasks.core.LocalTask;
import org.eclipse.mylyn.internal.tasks.core.RepositoryQuery;
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.core.deprecated.RepositoryTaskData;
import org.eclipse.mylyn.internal.tasks.ui.ITasksUiPreferenceConstants;
import org.eclipse.mylyn.internal.tasks.ui.RefactorRepositoryUrlOperation;
import org.eclipse.mylyn.internal.tasks.ui.TaskListManager;
import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin;
import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal;
import org.eclipse.mylyn.monitor.core.InteractionEvent;
import org.eclipse.mylyn.tasks.core.IRepositoryQuery;
import org.eclipse.mylyn.tasks.core.ITask;
import org.eclipse.mylyn.tasks.core.ITaskElement;
import org.eclipse.mylyn.tasks.core.TaskRepository;
import org.eclipse.mylyn.tasks.tests.connector.MockAttributeFactory;
import org.eclipse.mylyn.tasks.tests.connector.MockRepositoryConnector;
import org.eclipse.mylyn.tasks.tests.connector.MockRepositoryQuery;
import org.eclipse.mylyn.tasks.tests.connector.MockTask;
/**
* @author Mik Kersten
*/
public class TaskListManagerTest extends TestCase {
private TaskListManager manager;
private TaskRepository repository;
@Override
protected void setUp() throws Exception {
super.setUp();
TasksUiPlugin.getDefault().getPreferenceStore().setValue(
ITasksUiPreferenceConstants.REPOSITORY_SYNCH_SCHEDULE_ENABLED, false);
manager = TasksUiPlugin.getTaskListManager();
for (TaskRepository repository : TasksUiPlugin.getRepositoryManager().getAllRepositories()) {
TasksUiPlugin.getRepositoryManager().removeRepository(repository,
TasksUiPlugin.getDefault().getRepositoriesFilePath());
}
manager.resetTaskList();
assertEquals(0, manager.getTaskList().getAllTasks().size());
// manager.readExistingOrCreateNewList();
TasksUiPlugin.getExternalizationManager().saveNow(new NullProgressMonitor());
TasksUiPlugin.getDefault().reloadDataDirectory();
repository = new TaskRepository(MockRepositoryConnector.REPOSITORY_KIND, MockRepositoryConnector.REPOSITORY_URL);
TasksUiPlugin.getRepositoryManager().addRepository(repository);
assertEquals(0, manager.getTaskList().getAllTasks().size());
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
TasksUiPlugin.getRepositoryManager().removeRepository(repository,
TasksUiPlugin.getDefault().getRepositoriesFilePath());
manager.resetTaskList();
TasksUiPlugin.getExternalizationManager().saveNow(null);
assertEquals(0, manager.getTaskList().getAllTasks().size());
}
public void testUncategorizedTasksNotLost() throws CoreException {
MockRepositoryQuery query = new MockRepositoryQuery("Test");
manager.getTaskList().addQuery(query);
MockTask task = new MockTask("1");
manager.getTaskList().addTask(task, query);
manager.getTaskList().addTask(task, manager.getTaskList().getDefaultCategory());
assertTrue(query.contains(task.getHandleIdentifier()));
assertTrue(manager.getTaskList().getDefaultCategory().contains(task.getHandleIdentifier()));
TasksUiPlugin.getExternalizationManager().requestSave();
manager.resetTaskList();
assertEquals(0, manager.getTaskList().getAllTasks().size());
assertFalse(manager.getTaskList().getDefaultCategory().contains(task.getHandleIdentifier()));
TasksUiPlugin.getDefault().reloadDataDirectory();
assertTrue(manager.getTaskList().getDefaultCategory().contains(task.getHandleIdentifier()));
}
public void testQueryAndCategoryNameClash() {
TaskCategory category = new TaskCategory("TestClash");
manager.getTaskList().addCategory(category);
assertTrue(manager.getTaskList().getCategories().contains(category));
assertEquals(2, manager.getTaskList().getCategories().size());
MockRepositoryQuery query = new MockRepositoryQuery("TestClash");
manager.getTaskList().addQuery(query);
assertTrue(manager.getTaskList().getCategories().contains(category));
assertEquals(2, manager.getTaskList().getCategories().size());
manager.getTaskList().deleteCategory(category);
}
public void testUniqueTaskID() {
LocalTask task1 = TasksUiInternal.createNewLocalTask("label");
manager.getTaskList().addTask(task1);
LocalTask task2 = TasksUiInternal.createNewLocalTask("label");
manager.getTaskList().addTask(task2);
assertEquals(2, manager.getTaskList().getLastLocalTaskId());
manager.getTaskList().deleteTask(task2);
LocalTask task3 = TasksUiInternal.createNewLocalTask("label");
manager.getTaskList().addTask(task3);
assertTrue(task3.getHandleIdentifier() + " should end with 3", task3.getHandleIdentifier().endsWith("3"));
assertEquals(3, manager.getTaskList().getLastLocalTaskId());
assertEquals(2, manager.getTaskList().getAllTasks().size());
manager.saveTaskList();
manager.resetTaskList();
assertEquals(0, manager.getTaskList().getAllTasks().size());
assertEquals(0, manager.getTaskList().getLastLocalTaskId());
manager.readExistingOrCreateNewList();
assertEquals(2, manager.getTaskList().getAllTasks().size());
assertEquals(3, manager.getTaskList().getLastLocalTaskId());
ITask task4 = TasksUiInternal.createNewLocalTask("label");
assertTrue(task4.getHandleIdentifier() + " should end with 4", task4.getHandleIdentifier().endsWith("4"));
}
public void testSingleTaskDeletion() {
MockTask task = new MockTask("1");
task.setLastReadTimeStamp("now");
manager.getTaskList().addTask(task,
manager.getTaskList().getUnmatchedContainer(LocalRepositoryConnector.REPOSITORY_URL));
assertEquals(1, manager.getTaskList().getAllTasks().size());
manager.getTaskList().deleteTask(task);
assertEquals(0, manager.getTaskList().getAllTasks().size());
manager.getTaskList().addTask(task,
manager.getTaskList().getUnmatchedContainer(LocalRepositoryConnector.REPOSITORY_URL));
assertEquals(1, manager.getTaskList().getAllTasks().size());
manager.saveTaskList();
manager.resetTaskList();
manager.readExistingOrCreateNewList();
assertEquals(1, manager.getTaskList().getAllTasks().size());
manager.getTaskList().deleteTask(task);
assertEquals(0, manager.getTaskList().getAllTasks().size());
manager.saveTaskList();
assertEquals(0, manager.getTaskList().getAllTasks().size());
manager.resetTaskList();
manager.readExistingOrCreateNewList();
assertEquals(0, manager.getTaskList().getAllTasks().size());
}
private void runRepositoryUrlOperation(String oldUrl, String newUrl) {
try {
new RefactorRepositoryUrlOperation(oldUrl, newUrl).run(new NullProgressMonitor());
} catch (Exception e) {
fail();
}
}
public void testMigrateTaskContextFiles() throws IOException {
File fileA = ContextCore.getContextManager().getFileForContext("http://a-1");
fileA.createNewFile();
fileA.deleteOnExit();
assertTrue(fileA.exists());
runRepositoryUrlOperation("http://a", "http://b");
File fileB = ContextCore.getContextManager().getFileForContext("http://b-1");
assertTrue(fileB.exists());
assertFalse(fileA.exists());
}
public void testMigrateQueryUrlHandles() {
RepositoryQuery query = new MockRepositoryQuery("mquery");
query.setRepositoryUrl("http://foo.bar");
query.setUrl("http://foo.bar/b");
manager.getTaskList().addQuery(query);
assertTrue(manager.getTaskList().getRepositoryQueries("http://foo.bar").size() > 0);
runRepositoryUrlOperation("http://foo.bar", "http://bar.baz");
assertTrue(manager.getTaskList().getRepositoryQueries("http://foo.bar").size() == 0);
assertTrue(manager.getTaskList().getRepositoryQueries("http://bar.baz").size() > 0);
IRepositoryQuery changedQuery = manager.getTaskList().getRepositoryQueries("http://bar.baz").iterator().next();
assertEquals("http://bar.baz/b", changedQuery.getUrl());
}
public void testMigrateQueryHandles() {
RepositoryQuery query = new MockRepositoryQuery("mquery");
query.setRepositoryUrl("http://a");
manager.getTaskList().addQuery(query);
runRepositoryUrlOperation("http://a", "http://b");
assertFalse(manager.getTaskList().getRepositoryQueries("http://b").isEmpty());
assertTrue(manager.getTaskList().getRepositoryQueries("http://a").isEmpty());
}
// public void testMigrateQueryHits() {
// AbstractRepositoryQuery query = new MockRepositoryQuery("mquery",
// manager.getTaskList());
// query.setRepositoryUrl("http://a");
// manager.getTaskList().addQuery(query);
// AbstractQueryHit hit = new MockQueryHit(manager.getTaskList(), "http://a",
// "", "123");
// query.addHit(hit);
// runRepositoryUrlOperation("http://a", "http://b");
// assertNotNull(manager.getTaskList().getQueryHit("http://b-123"));
// assertEquals("http://b-123", hit.getHandleIdentifier());
// }
public void testMigrateTaskHandles() {
AbstractTask task = new MockTask("http://a", "123");
AbstractTask task2 = new MockTask("http://other", "other");
manager.getTaskList().addTask(task);
manager.getTaskList().addTask(task2);
RepositoryTaskData taskData = new RepositoryTaskData(new MockAttributeFactory(), task.getConnectorKind(),
task.getRepositoryUrl(), task.getTaskId(), task.getTaskKind());
TasksUiPlugin.getTaskDataStorageManager().setNewTaskData(taskData);
assertNotNull(TasksUiPlugin.getTaskDataStorageManager().getNewTaskData(task.getRepositoryUrl(),
task.getTaskId()));
RepositoryTaskData taskData2 = new RepositoryTaskData(new MockAttributeFactory(), task2.getConnectorKind(),
task2.getRepositoryUrl(), task2.getTaskId(), task2.getTaskKind());
taskData2.setNewComment("TEST");
TasksUiPlugin.getTaskDataStorageManager().setNewTaskData(taskData2);
assertNotNull(TasksUiPlugin.getTaskDataStorageManager().getNewTaskData(task2.getRepositoryUrl(),
task2.getTaskId()));
assertEquals("TEST", TasksUiPlugin.getTaskDataStorageManager().getNewTaskData(task2.getRepositoryUrl(),
task2.getTaskId()).getNewComment());
runRepositoryUrlOperation("http://a", "http://b");
assertNull(manager.getTaskList().getTask("http://a-123"));
assertNotNull(manager.getTaskList().getTask("http://b-123"));
assertNotNull(TasksUiPlugin.getTaskDataStorageManager().getNewTaskData("http://b", "123"));
RepositoryTaskData otherData = TasksUiPlugin.getTaskDataStorageManager().getNewTaskData(
task2.getRepositoryUrl(), task2.getTaskId());
assertNotNull(otherData);
assertEquals("TEST", otherData.getNewComment());
}
public void testMigrateTaskHandlesWithExplicitSet() {
AbstractTask task = new MockTask("http://a", "123");
task.setUrl("http://a/task/123");
manager.getTaskList().addTask(task);
runRepositoryUrlOperation("http://a", "http://b");
assertNull(manager.getTaskList().getTask("http://a-123"));
assertNotNull(manager.getTaskList().getTask("http://b-123"));
assertEquals("http://b/task/123", task.getUrl());
}
public void testRefactorMetaContextHandles() {
String firstUrl = "http://repository1.com/bugs";
String secondUrl = "http://repository2.com/bugs";
AbstractTask task1 = new MockTask(firstUrl, "1");
AbstractTask task2 = new MockTask(firstUrl, "2");
manager.getTaskList().addTask(task1);
manager.getTaskList().addTask(task2);
Calendar startDate = Calendar.getInstance();
Calendar endDate = Calendar.getInstance();
endDate.add(Calendar.MINUTE, 5);
Calendar startDate2 = Calendar.getInstance();
startDate2.add(Calendar.MINUTE, 15);
Calendar endDate2 = Calendar.getInstance();
endDate2.add(Calendar.MINUTE, 25);
ContextCore.getContextManager().resetActivityHistory();
InteractionContext metaContext = ContextCorePlugin.getContextManager().getActivityMetaContext();
assertEquals(0, metaContext.getInteractionHistory().size());
ContextCore.getContextManager().processActivityMetaContextEvent(
new InteractionEvent(InteractionEvent.Kind.ATTENTION,
IInteractionContextManager.ACTIVITY_STRUCTUREKIND_TIMING, task1.getHandleIdentifier(),
"origin", null, IInteractionContextManager.ACTIVITY_DELTA_ADDED, 1f, startDate.getTime(),
endDate.getTime()));
ContextCore.getContextManager().processActivityMetaContextEvent(
new InteractionEvent(InteractionEvent.Kind.ATTENTION,
IInteractionContextManager.ACTIVITY_STRUCTUREKIND_TIMING, task2.getHandleIdentifier(),
"origin", null, IInteractionContextManager.ACTIVITY_DELTA_ADDED, 1f, startDate2.getTime(),
endDate2.getTime()));
assertEquals(2, metaContext.getInteractionHistory().size());
assertEquals(60 * 1000 * 5, TasksUiPlugin.getTaskActivityManager().getElapsedTime(task1));
assertEquals(2 * 60 * 1000 * 5, TasksUiPlugin.getTaskActivityManager().getElapsedTime(task2));
runRepositoryUrlOperation(firstUrl, secondUrl);
metaContext = ContextCorePlugin.getContextManager().getActivityMetaContext();
assertEquals(2, metaContext.getInteractionHistory().size());
assertEquals(60 * 1000 * 5, TasksUiPlugin.getTaskActivityManager().getElapsedTime(new MockTask(secondUrl, "1")));
assertEquals(2 * 60 * 1000 * 5, TasksUiPlugin.getTaskActivityManager().getElapsedTime(
new MockTask(secondUrl, "2")));
assertEquals(secondUrl + "-1", metaContext.getInteractionHistory().get(0).getStructureHandle());
}
public void testIsActiveToday() {
AbstractTask task = new LocalTask("1", "task-1");
assertFalse(TasksUiPlugin.getTaskActivityManager().isScheduledForToday(task));
task.setScheduledForDate(TaskActivityUtil.getCurrentWeek().getToday());
assertTrue(TasksUiPlugin.getTaskActivityManager().isScheduledForToday(task));
task.setReminded(true);
assertTrue(TasksUiPlugin.getTaskActivityManager().isScheduledForToday(task));
task.setReminded(true);
// Calendar inAnHour = Calendar.getInstance();
// inAnHour.set(Calendar.HOUR_OF_DAY, inAnHour.get(Calendar.HOUR_OF_DAY) + 1);
// inAnHour.getTime();
// task.setScheduledForDate(inAnHour.getTime());
// Calendar tomorrow = Calendar.getInstance();
// TaskActivityUtil.snapToNextDay(tomorrow);
// assertEquals(-1, inAnHour.compareTo(tomorrow));
// assertTrue(TasksUiPlugin.getTaskActivityManager().isScheduledForToday(task));
}
public void testScheduledForToday() {
AbstractTask task = new LocalTask("1", "task-1");
task.setScheduledForDate(TaskActivityUtil.getCurrentWeek().getToday());
assertTrue(TasksUiPlugin.getTaskActivityManager().isScheduledForToday(task));
task.setScheduledForDate(TaskActivityUtil.getCurrentWeek().getToday().next());
assertFalse(TasksUiPlugin.getTaskActivityManager().isScheduledForToday(task));
}
public void testSchedulePastEndOfMonth() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MONTH, Calendar.SEPTEMBER);
calendar.set(Calendar.DAY_OF_MONTH, 30);
TaskActivityUtil.snapForwardNumDays(calendar, 1);
assertEquals("Should be October", Calendar.OCTOBER, calendar.get(Calendar.MONTH));
}
public void testIsCompletedToday() {
ITask task = new LocalTask("1", "task 1");
task.setCompletionDate(new Date());
assertTrue(TasksUiPlugin.getTaskActivityManager().isCompletedToday(task));
MockTask mockTask = new MockTask("1");
mockTask.setOwner("unknown");
manager.getTaskList().addTask(mockTask);
mockTask.setCompletionDate(new Date());
assertFalse("completed: " + mockTask.getCompletionDate(), TasksUiPlugin.getTaskActivityManager()
.isCompletedToday(mockTask));
mockTask = new MockTask("2");
manager.getTaskList().addTask(mockTask);
mockTask.setCompletionDate(new Date());
repository.setAuthenticationCredentials("testUser", "testPassword");
mockTask.setOwner("testUser");
assertTrue(TasksUiPlugin.getTaskActivityManager().isCompletedToday(mockTask));
}
public void testMoveCategories() {
// assertEquals(0, manager.getTaskList()
// .getOrphanContainer(LocalRepositoryConnector.REPOSITORY_URL)
// .getChildren()
// .size());
assertTrue(manager.getTaskList().getDefaultCategory().isEmpty());
AbstractTask task1 = new LocalTask("t1", "t1");
TaskCategory cat1 = new TaskCategory("cat1");
manager.getTaskList().addCategory(cat1);
TaskCategory cat2 = new TaskCategory("cat2");
manager.getTaskList().addCategory(cat2);
manager.getTaskList().addTask(task1, cat1);
assertEquals(1, manager.getTaskList().getContainerForHandle("cat1").getChildren().size());
assertEquals(0, manager.getTaskList().getContainerForHandle("cat2").getChildren().size());
manager.getTaskList().addTask(task1, cat2);
assertEquals(0, manager.getTaskList().getContainerForHandle("cat1").getChildren().size());
assertEquals(1, manager.getTaskList().getContainerForHandle("cat2").getChildren().size());
}
public void testMoveToRoot() {
// assertEquals(0, manager.getTaskList()
// .getOrphanContainer(LocalRepositoryConnector.REPOSITORY_URL)
// .getChildren()
// .size());
assertTrue(manager.getTaskList().getDefaultCategory().isEmpty());
AbstractTask task1 = new LocalTask("t1", "t1");
manager.getTaskList().addTask(task1,
manager.getTaskList().getUnmatchedContainer(LocalRepositoryConnector.REPOSITORY_URL));
assertEquals(1, manager.getTaskList().getDefaultCategory().getChildren().size());
assertEquals(manager.getTaskList().getDefaultCategory(), TaskCategory.getParentTaskCategory(task1));
TaskCategory cat1 = new TaskCategory("c1");
manager.getTaskList().addCategory(cat1);
manager.getTaskList().addTask(task1, cat1);
assertEquals(0, manager.getTaskList().getDefaultCategory().getChildren().size());
assertEquals(cat1, TaskCategory.getParentTaskCategory(task1));
manager.getTaskList().addTask(task1,
manager.getTaskList().getUnmatchedContainer(LocalRepositoryConnector.REPOSITORY_URL));
assertEquals(1, manager.getTaskList().getDefaultCategory().getChildren().size());
assertEquals(0, cat1.getChildren().size());
assertEquals(manager.getTaskList().getDefaultCategory(), TaskCategory.getParentTaskCategory(task1));
}
public void testCategoryPersistance() {
MockTask task = new MockTask("1");
TaskCategory category = new TaskCategory("cat");
manager.getTaskList().addCategory(category);
manager.getTaskList().addTask(task, category);
assertNotNull(manager.getTaskList());
assertEquals(2, manager.getTaskList().getCategories().size());
manager.saveTaskList();
manager.resetTaskList();
manager.readExistingOrCreateNewList();
assertEquals("" + manager.getTaskList().getCategories(), 2, manager.getTaskList().getCategories().size());
assertEquals(1, manager.getTaskList().getAllTasks().size());
}
public void testDeleteCategory() {
assertNotNull(manager.getTaskList());
assertEquals(1, manager.getTaskList().getCategories().size());
TaskCategory category = new TaskCategory("cat");
manager.getTaskList().addCategory(category);
assertEquals(2, manager.getTaskList().getCategories().size());
manager.getTaskList().deleteCategory(category);
assertEquals(1, manager.getTaskList().getCategories().size());
}
public void testDeleteCategoryMovesTasksToRoot() {
AbstractTask task = new MockTask("delete");
TaskCategory category = new TaskCategory("cat");
manager.getTaskList().addCategory(category);
manager.getTaskList().addTask(task, category);
assertEquals(0, manager.getTaskList().getDefaultCategory().getChildren().size());
manager.getTaskList().deleteCategory(category);
manager.getTaskList().getUnmatchedContainer(MockRepositoryConnector.REPOSITORY_URL);
}
public void testRenameCategory() {
assertNotNull(manager.getTaskList());
TaskCategory category = new TaskCategory("cat");
manager.getTaskList().addCategory(category);
assertEquals(2, manager.getTaskList().getCategories().size());
String newDesc = "newDescription";
manager.getTaskList().renameContainer(category, newDesc);
AbstractTaskCategory container = manager.getTaskList().getContainerForHandle(newDesc);
assertNotNull(container);
assertEquals(newDesc, container.getSummary());
manager.getTaskList().deleteCategory(container);
assertEquals(1, manager.getTaskList().getCategories().size());
}
public void testDeleteCategoryAfterRename() {
String newDesc = "newDescription";
assertNotNull(manager.getTaskList());
assertEquals(1, manager.getTaskList().getCategories().size());
TaskCategory category = new TaskCategory("cat");
manager.getTaskList().addCategory(category);
assertEquals(2, manager.getTaskList().getCategories().size());
manager.getTaskList().renameContainer(category, newDesc);
manager.getTaskList().deleteCategory(category);
assertEquals(1, manager.getTaskList().getCategories().size());
}
public void testCreateSameCategoryName() {
assertNotNull(manager.getTaskList());
assertEquals(1, manager.getTaskList().getCategories().size());
TaskCategory category = new TaskCategory("cat");
manager.getTaskList().addCategory(category);
assertEquals(2, manager.getTaskList().getCategories().size());
TaskCategory category2 = new TaskCategory("cat");
manager.getTaskList().addCategory(category2);
assertEquals(2, manager.getTaskList().getCategories().size());
ITaskElement container = manager.getTaskList().getContainerForHandle("cat");
assertEquals(container, category);
}
public void testDeleteRootTask() {
AbstractTask task = new LocalTask("1", "label");
manager.getTaskList().addTask(task);
manager.getTaskList().deleteTask(task);
assertEquals(0, manager.getTaskList().getAllTasks().size());
assertEquals(0, manager.getTaskList().getDefaultCategory().getChildren().size());
}
public void testDeleteFromCategory() {
assertEquals(0, manager.getTaskList().getAllTasks().size());
assertEquals(0, manager.getTaskList().getDefaultCategory().getChildren().size());
//assertEquals(0, manager.getTaskList().getArchiveContainer().getChildren().size());
assertEquals(1, manager.getTaskList().getCategories().size());
AbstractTask task = new LocalTask("1", "label");
TaskCategory category = new TaskCategory("handleAndDescription");
manager.getTaskList().addTask(task);
assertEquals(1, manager.getTaskList().getDefaultCategory().getChildren().size());
manager.getTaskList().addCategory(category);
manager.getTaskList().addTask(task, category);
assertEquals(2, manager.getTaskList().getCategories().size());
assertEquals(1, category.getChildren().size());
assertEquals(0, manager.getTaskList().getDefaultCategory().getChildren().size());
assertEquals(1, manager.getTaskList().getAllTasks().size());
manager.getTaskList().deleteTask(task);
assertEquals(0, manager.getTaskList().getAllTasks().size());
assertEquals(0, manager.getTaskList().getDefaultCategory().getChildren().size());
assertEquals(0, category.getChildren().size());
}
public void testDeleteRepositoryTask() {
String repositoryUrl = "http://somewhere.com";
repository = new TaskRepository(MockRepositoryConnector.REPOSITORY_KIND, repositoryUrl);
TasksUiPlugin.getRepositoryManager().addRepository(repository);
MockTask task = new MockTask(repositoryUrl, "1");
TaskList taskList = TasksUiPlugin.getTaskList();
taskList.addTask(task, manager.getTaskList().getDefaultCategory());
MockRepositoryQuery query = new MockRepositoryQuery("query");
taskList.addQuery(query);
taskList.addTask(task, query);
assertEquals(1, taskList.getAllTasks().size());
assertEquals(1, manager.getTaskList().getDefaultCategory().getChildren().size());
taskList.deleteTask(task);
assertEquals(0, taskList.getAllTasks().size());
assertEquals(0, manager.getTaskList().getDefaultCategory().getChildren().size());
}
public void testCreate() {
MockTask repositoryTask = new MockTask("1");
repositoryTask.setLastReadTimeStamp("now");
manager.getTaskList().addTask(repositoryTask, manager.getTaskList().getDefaultCategory());
assertEquals(1, manager.getTaskList().getDefaultCategory().getChildren().size());
manager.saveTaskList();
manager.resetTaskList();
manager.readExistingOrCreateNewList();
assertEquals(1, manager.getTaskList().getAllTasks().size());
}
public void testCreateAndMove() throws CoreException {
MockTask repositoryTask = new MockTask("1");
repositoryTask.setLastReadTimeStamp("now");
manager.getTaskList().addTask(repositoryTask);
assertEquals(1, manager.getTaskList().getAllTasks().size());
TasksUiPlugin.getExternalizationManager().requestSave();
TasksUiPlugin.getDefault().reloadDataDirectory();
assertEquals(1, manager.getTaskList().getAllTasks().size());
assertEquals(1, manager.getTaskList()
.getUnmatchedContainer(MockRepositoryConnector.REPOSITORY_URL)
.getChildren()
.size());
}
public void testArchiveRepositoryTaskExternalization() {
MockTask repositoryTask = new MockTask("1");
repositoryTask.setLastReadTimeStamp("now");
manager.getTaskList().addTask(repositoryTask);
assertEquals(1, manager.getTaskList()
.getUnmatchedContainer(MockRepositoryConnector.REPOSITORY_URL)
.getChildren()
.size());
manager.saveTaskList();
manager.resetTaskList();
manager.readExistingOrCreateNewList();
assertEquals(1, manager.getTaskList()
.getUnmatchedContainer(MockRepositoryConnector.REPOSITORY_URL)
.getChildren()
.size());
}
public void testRepositoryTasksAndCategoriesMultiRead() {
TaskCategory cat1 = new TaskCategory("Category 1");
manager.getTaskList().addCategory(cat1);
MockTask reportInCat1 = new MockTask("123");
manager.getTaskList().addTask(reportInCat1, cat1);
assertEquals(cat1, TaskCategory.getParentTaskCategory(reportInCat1));
manager.saveTaskList();
assertNotNull(manager.getTaskList());
manager.resetTaskList();
manager.readExistingOrCreateNewList();
// read once
Set<AbstractTaskCategory> readCats = manager.getTaskList().getTaskContainers();
assertTrue(manager.getTaskList().getCategories().contains(cat1));
Iterator<AbstractTaskCategory> iterator = readCats.iterator();
boolean found = false;
while (iterator.hasNext()) {
ITaskElement readCat1 = iterator.next();
if (cat1.equals(readCat1)) {
found = true;
assertEquals(1, readCat1.getChildren().size());
}
}
if (!found) {
fail(" Category not found afer tasklist read");
}
manager.saveTaskList();
assertNotNull(manager.getTaskList());
manager.resetTaskList();
manager.readExistingOrCreateNewList();
// read again
readCats = manager.getTaskList().getTaskContainers();
assertTrue(manager.getTaskList().getCategories().contains(cat1));
iterator = readCats.iterator();
found = false;
while (iterator.hasNext()) {
ITaskElement readCat1 = iterator.next();
if (cat1.equals(readCat1)) {
found = true;
assertEquals(1, readCat1.getChildren().size());
}
}
if (!found) {
fail(" Category not found afer tasklist read");
}
}
public void testSubTaskExternalization() {
Set<AbstractTask> rootTasks = new HashSet<AbstractTask>();
AbstractTask task1 = new LocalTask("1", "task1");
manager.getTaskList().addTask(task1);
rootTasks.add(task1);
AbstractTask sub2 = new LocalTask("2", "sub 2");
manager.getTaskList().addTask(sub2, task1);
assertEquals(1, task1.getChildren().size());
assertTrue(rootTasks.containsAll(manager.getTaskList().getDefaultCategory().getChildren()));
manager.saveTaskList();
assertNotNull(manager.getTaskList());
manager.resetTaskList();
manager.readExistingOrCreateNewList();
assertNotNull(manager.getTaskList());
// XXX: This should pass once sub tasks are handled properly
// assertTrue(rootTasks.containsAll(manager.getTaskList().getOrphanContainer(
// LocalRepositoryConnector.REPOSITORY_URL).getChildren()));
Collection<ITask> readList = manager.getTaskList().getDefaultCategory().getChildren();
for (ITask task : readList) {
if (task.equals(task1)) {
assertEquals(task1.getSummary(), task.getSummary());
assertEquals(1, task.getChildren().size());
}
}
}
public void testCreationAndExternalization() throws CoreException {
Set<AbstractTask> rootTasks = new HashSet<AbstractTask>();
AbstractTask task1 = TasksUiInternal.createNewLocalTask("task 1");
rootTasks.add(task1);
assertEquals(1, manager.getTaskList().getAllTasks().size());
AbstractTask sub1 = TasksUiInternal.createNewLocalTask("sub 1");
manager.getTaskList().addTask(sub1, task1);
assertEquals(4, manager.getTaskList().getRootElements().size());
//manager.getTaskList().moveToContainer(sub1, manager.getTaskList().getArchiveContainer());
AbstractTask task2 = TasksUiInternal.createNewLocalTask("task 2");
rootTasks.add(task2);
assertEquals(3, manager.getTaskList().getAllTasks().size());
Set<TaskCategory> categories = new HashSet<TaskCategory>();
Set<AbstractTask> cat1Contents = new HashSet<AbstractTask>();
TaskCategory cat1 = new TaskCategory("Category 1");
manager.getTaskList().addCategory(cat1);
categories.add(cat1);
assertEquals(5, manager.getTaskList().getRootElements().size());
AbstractTask task3 = TasksUiInternal.createNewLocalTask("task 3");
manager.getTaskList().addTask(task3, cat1);
cat1Contents.add(task3);
assertEquals(4, manager.getTaskList().getAllTasks().size());
assertEquals(cat1, TaskCategory.getParentTaskCategory(task3));
AbstractTask sub2 = TasksUiInternal.createNewLocalTask("sub 2");
assertEquals(5, manager.getTaskList().getAllTasks().size());
manager.getTaskList().addTask(sub2, task3);
//manager.getTaskList().moveToContainer(sub2, manager.getTaskList().getArchiveContainer());
AbstractTask task4 = TasksUiInternal.createNewLocalTask("task 4");
manager.getTaskList().addTask(task4, cat1);
cat1Contents.add(task4);
assertEquals(6, manager.getTaskList().getAllTasks().size());
MockTask reportInCat1 = new MockTask("123");
manager.getTaskList().addTask(reportInCat1, cat1);
assertEquals(cat1, TaskCategory.getParentTaskCategory(reportInCat1));
cat1Contents.add(reportInCat1);
assertEquals(7, manager.getTaskList().getAllTasks().size());
assertEquals(5, manager.getTaskList().getRootElements().size());
TasksUiPlugin.getExternalizationManager().requestSave();
TasksUiPlugin.getDefault().reloadDataDirectory();
Collection<ITask> readList = manager.getTaskList().getDefaultCategory().getChildren();
for (ITask task : readList) {
if (task.equals(task1)) {
assertEquals(task1.getSummary(), task.getSummary());
assertEquals(1, task.getChildren().size());
}
}
Set<AbstractTaskCategory> readCats = manager.getTaskList().getTaskContainers();
assertTrue(manager.getTaskList().getCategories().contains(cat1));
Iterator<AbstractTaskCategory> iterator = readCats.iterator();
boolean found = false;
while (iterator.hasNext()) {
ITaskElement readCat1 = iterator.next();
if (cat1.equals(readCat1)) {
found = true;
for (ITask task : readCat1.getChildren()) {
assertTrue(cat1Contents.contains(task));
}
}
}
if (!found) {
fail(" Category not found afer tasklist read");
}
}
public void testExternalizationOfHandlesWithDash() throws CoreException {
AbstractTask task1 = TasksUiInternal.createNewLocalTask("task 1");
manager.getTaskList().addTask(task1, manager.getTaskList().getDefaultCategory());
TasksUiPlugin.getExternalizationManager().requestSave();
TasksUiPlugin.getDefault().reloadDataDirectory();
assertTrue(manager.getTaskList().getDefaultCategory().getChildren().contains(task1));
}
public void testgetQueriesAndHitsForHandle() {
TaskList taskList = manager.getTaskList();
MockTask hit1 = new MockTask("1");
MockTask hit2 = new MockTask("2");
MockTask hit3 = new MockTask("3");
MockTask hit1twin = new MockTask("1");
MockTask hit2twin = new MockTask("2");
MockTask hit3twin = new MockTask("3");
MockRepositoryQuery query1 = new MockRepositoryQuery("query1");
MockRepositoryQuery query2 = new MockRepositoryQuery("query2");
taskList.addQuery(query1);
taskList.addQuery(query2);
taskList.addTask(hit1, query1);
taskList.addTask(hit2, query1);
taskList.addTask(hit3, query1);
assertEquals(3, query1.getChildren().size());
taskList.addTask(hit1twin, query2);
taskList.addTask(hit2twin, query2);
taskList.addTask(hit3twin, query2);
assertEquals(3, query2.getChildren().size());
Set<AbstractTaskContainer> queriesReturned = hit1.getParentContainers();
assertNotNull(queriesReturned);
assertEquals(2, queriesReturned.size());
assertTrue(queriesReturned.contains(query1));
assertTrue(queriesReturned.contains(query2));
}
// public void testQueryHitHasParent() {
// TaskList taskList = manager.getTaskList();
//
// MockQueryHit hit1 = new MockQueryHit(taskList,
// MockRepositoryConnector.REPOSITORY_URL, "description1", "1");
// assertNull(hit1.getParent());
// MockRepositoryQuery query1 = new MockRepositoryQuery("query1",
// manager.getTaskList());
// query1.addHit(hit1);
// assertEquals(query1, hit1.getParent());
//
// }
public void testUpdateQueryHits() {
ITaskList taskList = manager.getTaskList();
MockTask hit1 = new MockTask("1");
MockTask hit2 = new MockTask("2");
MockTask hit3 = new MockTask("3");
MockTask hit1twin = new MockTask("1");
MockTask hit2twin = new MockTask("2");
MockTask hit3twin = new MockTask("3");
MockRepositoryQuery query1 = new MockRepositoryQuery("query1");
taskList.addQuery(query1);
taskList.addTask(hit1, query1);
taskList.addTask(hit2, query1);
taskList.addTask(hit3, query1);
taskList.addTask(hit1twin, query1);
taskList.addTask(hit2twin, query1);
taskList.addTask(hit3twin, query1);
assertEquals(3, query1.getChildren().size());
for (ITask child : query1.getChildren()) {
taskList.removeFromContainer(query1, child);
}
assertEquals(0, query1.getChildren().size());
taskList.addTask(hit1, query1);
taskList.addTask(hit2, query1);
assertEquals(2, query1.getChildren().size());
hit1.setNotified(true);
taskList.addTask(hit1twin, query1);
taskList.addTask(hit2twin, query1);
taskList.addTask(hit3twin, query1);
assertEquals(3, query1.getChildren().size());
assertTrue(query1.getChildren().contains(hit1twin));
assertTrue(query1.getChildren().contains(hit2twin));
assertTrue(query1.getChildren().contains(hit3twin));
for (ITask hit : query1.getChildren()) {
if (hit.equals(hit1twin)) {
assertTrue(((AbstractTask) hit).isNotified());
} else {
assertFalse(((AbstractTask) hit).isNotified());
}
}
}
public void testgetRepositoryTasks() {
String repositoryUrl = "https://bugs.eclipse.org/bugs";
String bugNumber = "106939";
MockTask task1 = new MockTask(repositoryUrl, bugNumber);
manager.getTaskList().addTask(task1);
MockTask task2 = new MockTask("https://unresolved", bugNumber);
manager.getTaskList().addTask(task2);
TaskList taskList = manager.getTaskList();
assertEquals(2, taskList.getAllTasks().size());
Set<ITask> tasksReturned = taskList.getTasks(repositoryUrl);
assertNotNull(tasksReturned);
assertEquals(1, tasksReturned.size());
assertTrue(tasksReturned.contains(task1));
}
public void testAllTasksDeactivation() {
AbstractTask task1 = new LocalTask("task1", "description1");
AbstractTask task2 = new LocalTask("task2", "description2");
TaskList taskList = manager.getTaskList();
taskList.addTask(task1);
taskList.addTask(task2);
assertNull(manager.getActiveTask());
manager.activateTask(task2);
assertEquals(task2, manager.getActiveTask());
manager.deactivateAllTasks();
assertNull(manager.getActiveTask());
}
public void testMarkTaskRead() {
// TODO reimplement
// String repositoryUrl = "http://mylyn.eclipse.org/bugs222";
// MockTask task1 = new MockTask(repositoryUrl, "1");
// MockTask task2 = new MockTask(repositoryUrl, "2");
// task1.setSynchronizationState(SynchronizationState.INCOMING);
// task2.setSynchronizationState(SynchronizationState.INCOMING);
// List<ITaskElement> elements = new ArrayList<ITaskElement>();
// elements.add(task1);
// elements.add(task2);
// MarkTaskReadAction readAction = new MarkTaskReadAction(elements);
// readAction.run();
// assertEquals(SynchronizationState.SYNCHRONIZED, task1.getSynchronizationState());
// assertEquals(SynchronizationState.SYNCHRONIZED, task2.getSynchronizationState());
//
// manager.getTaskList().reset();
// MockTask hit1 = new MockTask("1");
// MockTask hit2 = new MockTask("2");
// MockRepositoryQuery query = new MockRepositoryQuery("summary");
// manager.getTaskList().addQuery(query);
// manager.getTaskList().addTask(hit1, query);
// manager.getTaskList().addTask(hit2, query);
//
// elements.clear();
// elements.add(query);
// readAction = new MarkTaskReadAction(elements);
// readAction.run();
// assertEquals(2, query.getChildren().size());
// for (ITaskElement element : query.getChildren()) {
// if (element instanceof MockTask) {
// MockTask mockTask = (MockTask) element;
// assertEquals(SynchronizationState.SYNCHRONIZED, mockTask.getSynchronizationState());
// }
// }
}
public void testMarkUnRead() {
// TODO reimplement
// String repositoryUrl = "http://mylyn.eclipse.org/bugs222";
// MockTask task1 = new MockTask(repositoryUrl, "1");
// MockTask task2 = new MockTask(repositoryUrl, "2");
// assertEquals(SynchronizationState.SYNCHRONIZED, task1.getSynchronizationState());
// assertEquals(SynchronizationState.SYNCHRONIZED, task2.getSynchronizationState());
// List<ITaskElement> elements = new ArrayList<ITaskElement>();
// elements.add(task1);
// elements.add(task2);
// MarkTaskUnreadAction unreadAction = new MarkTaskUnreadAction(elements);
// unreadAction.run();
// assertEquals(SynchronizationState.INCOMING, task1.getSynchronizationState());
// assertEquals(SynchronizationState.INCOMING, task2.getSynchronizationState());
//
// manager.getTaskList().reset();
// MockTask hit1 = new MockTask("1");
// MockTask hit2 = new MockTask("2");
// MockRepositoryQuery query = new MockRepositoryQuery("summary");
// manager.getTaskList().addQuery(query);
// manager.getTaskList().addTask(hit1, query);
// manager.getTaskList().addTask(hit2, query);
//
// elements.clear();
// elements.add(query);
// MarkTaskReadAction readAction = new MarkTaskReadAction(elements);
// readAction.run();
// assertEquals(2, query.getChildren().size());
// for (ITaskElement element : query.getChildren()) {
// if (element instanceof MockTask) {
// MockTask mockTask = (MockTask) element;
// assertEquals(SynchronizationState.SYNCHRONIZED, mockTask.getSynchronizationState());
// } else {
// fail();
// }
// }
//
// unreadAction = new MarkTaskUnreadAction(elements);
// unreadAction.run();
// assertEquals(2, query.getChildren().size());
// for (ITaskElement element : query.getChildren()) {
// if (element instanceof MockTask) {
// MockTask mockTask = (MockTask) element;
// assertEquals(SynchronizationState.INCOMING, mockTask.getSynchronizationState());
// } else {
// fail();
// }
// }
}
public void testQueryHitsNotDropped() {
MockTask task1 = new MockTask("1");
MockTask task2 = new MockTask("2");
task1.setLastReadTimeStamp("today");
task2.setLastReadTimeStamp("today");
MockRepositoryQuery query = new MockRepositoryQuery("summary");
manager.getTaskList().addQuery(query);
manager.getTaskList().addTask(task1, query);
manager.getTaskList().addTask(task2, query);
//assertEquals(0, manager.getTaskList().getArchiveContainer().getChildren().size());
assertEquals(2, query.getChildren().size());
TaskRepository repository = TasksUiPlugin.getRepositoryManager().getRepository(
MockRepositoryConnector.REPOSITORY_URL);
Set<RepositoryQuery> queries = new HashSet<RepositoryQuery>();
queries.add(query);
TasksUiInternal.synchronizeQueries(new MockRepositoryConnector(), repository, queries, null, true);
//assertEquals(2, manager.getTaskList().getArchiveContainer().getChildren().size());
assertEquals(0, query.getChildren().size());
}
}