/*******************************************************************************
* Copyright (c) 2004, 2010 Tasktop Technologies 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:
* Tasktop Technologies - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.tasks.tests;
import java.util.Collection;
import java.util.HashSet;
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.LocalTask;
import org.eclipse.mylyn.internal.tasks.core.TaskList;
import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin;
import org.eclipse.mylyn.internal.tasks.ui.wizards.TaskDataImportWizard;
import org.eclipse.mylyn.internal.tasks.ui.wizards.TaskDataImportWizardPage;
import org.eclipse.mylyn.internal.tasks.ui.workingsets.TaskWorkingSetUpdater;
import org.eclipse.mylyn.tasks.ui.TasksUi;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkingSet;
import org.eclipse.ui.IWorkingSetManager;
import org.eclipse.ui.internal.Workbench;
/**
* Test case for the Task Import Wizard.
*
* @author Rob Elves
* @author Steffen Pingel
*/
public class TaskDataImportTest extends TestCase {
private TaskDataImportWizard wizard = null;
private TaskDataImportWizardPage wizardPage = null;
private final String BACKUP_v1 = "testdata/taskdataimporttest/mylardata-2007-01-19.zip";
private final String BACKUP_v3 = "testdata/taskdataimporttest/mylyn-v3-data-2009-12-09-171942.zip";
private final String BACKUP_IMPORT_TEST = "testdata/taskdataimporttest/mylyn-v3-data-2010-02-28.zip";
private final String BACKUP_OLD_v3 = "testdata/taskdataimporttest/mylyn-v3-data-2009-12-09-old-tasklist.zip";
private TaskList taskList;
@Override
protected void setUp() throws Exception {
super.setUp();
// Create the import wizard
wizard = new TaskDataImportWizard();
wizard.addPages();
wizard.createPageControls(new Shell());
wizardPage = (TaskDataImportWizardPage) wizard.getPage("org.eclipse.mylyn.tasklist.importPage");
assertNotNull(wizardPage);
TaskTestUtil.resetTaskListAndRepositories();
taskList = TasksUiPlugin.getTaskList();
// ContextCorePlugin.getContextManager().getActivityMetaContext().reset();
}
@Override
protected void tearDown() throws Exception {
wizard.dispose();
wizardPage.dispose();
// ContextCorePlugin.getContextManager().resetActivityMetaContext();
TaskTestUtil.resetTaskListAndRepositories();
super.tearDown();
}
/**
* Tests import of task data with working set active doesn't result in queries and categories being erroneously
* added to the active working set.
*/
public void testDisableWorkingSets() throws Exception {
IWorkingSetManager workingSetManager = Workbench.getInstance().getWorkingSetManager();
IWorkingSet workingSet = workingSetManager.createWorkingSet("Task Working Set", new IAdaptable[] {});
workingSet.setId(TaskWorkingSetUpdater.ID_TASK_WORKING_SET);
assertEquals(0, workingSet.getElements().length);
workingSetManager.addWorkingSet(workingSet);
Set<IWorkingSet> workingSets = new HashSet<IWorkingSet>();
workingSets.add(workingSet);
TaskWorkingSetUpdater.applyWorkingSetsToAllWindows(workingSets);
TaskDataImportWizard.performFinish(TaskTestUtil.getLocalFile(BACKUP_IMPORT_TEST), null);
assertEquals(2, TasksUiPlugin.getTaskList().getCategories().size());
// Active working set should not be populated with
// imported "Test" category
assertEquals(0, workingSet.getElements().length);
workingSetManager.removeWorkingSet(workingSet);
}
/**
* Tests the wizard when it has been asked to import all task data from a zip file
*/
public void testImportRepositoriesZip() {
// InteractionContext historyContext = ContextCorePlugin.getContextManager().getActivityMetaContext();
assertNotNull(taskList);
// assertNotNull(historyContext);
assertTrue(taskList.getAllTasks().size() == 0);
// assertTrue(historyContext.getInteractionHistory().size() == 0);
wizardPage.setSource(true, TaskTestUtil.getLocalFile(BACKUP_v1).getAbsolutePath());
wizard.performFinish();
Collection<AbstractTask> tasks = taskList.getAllTasks();
assertEquals(2, tasks.size());
// for (AbstractTask task : tasks) {
// assertTrue(ContextCorePlugin.getContextManager().hasContext(task.getHandleIdentifier()));
// }
// historyContext = ContextCorePlugin.getContextManager().getActivityMetaContext();
// assertNotNull(historyContext);
// assertTrue(historyContext.getInteractionHistory().size() > 0);
if (TasksUi.getRepositoryConnector("bugzilla") != null) {
assertEquals(3, TasksUiPlugin.getRepositoryManager().getAllRepositories().size());
} else {
// Bugzilla repositories are not imported if connector is not available
assertEquals(1, TasksUiPlugin.getRepositoryManager().getAllRepositories().size());
}
}
public void testImportOverwritesAllTasks() {
// InteractionContext historyContext = ContextCorePlugin.getContextManager().getActivityMetaContext();
assertNotNull(taskList);
// assertNotNull(historyContext);
assertTrue(taskList.getAllTasks().size() == 0);
// assertTrue(historyContext.getInteractionHistory().size() == 0);
AbstractTask task1 = new LocalTask("999", "label");
taskList.addTask(task1);
Collection<AbstractTask> tasks = taskList.getAllTasks();
assertEquals(1, tasks.size());
wizardPage.setSource(true, TaskTestUtil.getLocalFile(BACKUP_v1).getAbsolutePath());
wizard.performFinish();
tasks = taskList.getAllTasks();
assertEquals(2, tasks.size());
assertTrue(!taskList.getAllTasks().contains(task1));
// for (AbstractTask task : tasks) {
// assertTrue(ContextCorePlugin.getContextManager().hasContext(task.getHandleIdentifier()));
// }
// historyContext = ContextCorePlugin.getContextManager().getActivityMetaContext();
// assertNotNull(historyContext);
// assertTrue(historyContext.getInteractionHistory().size() > 0);
if (TasksUi.getRepositoryConnector("bugzilla") != null) {
assertEquals(3, TasksUiPlugin.getRepositoryManager().getAllRepositories().size());
} else {
// Bugzilla repositories are not imported if connector is not available
assertEquals(1, TasksUiPlugin.getRepositoryManager().getAllRepositories().size());
}
}
public void testImportBackupWithOldTaskList() {
wizardPage.setSource(true, TaskTestUtil.getLocalFile(BACKUP_OLD_v3).getAbsolutePath());
wizard.performFinish();
Collection<AbstractTask> tasks = taskList.getAllTasks();
assertEquals(1, tasks.size());
assertEquals("Task 3", tasks.iterator().next().getSummary());
}
public void testImportBackup() {
wizardPage.setSource(true, TaskTestUtil.getLocalFile(BACKUP_v3).getAbsolutePath());
wizard.performFinish();
Collection<AbstractTask> tasks = taskList.getAllTasks();
assertEquals(1, tasks.size());
assertEquals("Task 3", tasks.iterator().next().getSummary());
}
}