/******************************************************************************* * Copyright (c) 2004, 2012 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.lang.reflect.InvocationTargetException; import java.util.Arrays; import junit.framework.TestCase; import org.eclipse.core.internal.resources.ProjectDescription; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IProjectDescription; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.mylyn.commons.sdk.util.ResourceTestUtil; import org.eclipse.mylyn.internal.tasks.core.TaskList; import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; import org.eclipse.mylyn.internal.tasks.ui.workingsets.TaskWorkingSetUpdater; import org.eclipse.mylyn.tasks.tests.connector.MockRepositoryQuery; import org.eclipse.mylyn.tests.util.TestFixture; import org.eclipse.ui.IWorkingSet; import org.eclipse.ui.IWorkingSetManager; import org.eclipse.ui.actions.WorkspaceModifyOperation; import org.eclipse.ui.internal.Workbench; /** * @author Mik Kersten */ public class TaskWorkingSetTest extends TestCase { private IProject project; private IWorkspaceRoot root; private IWorkingSet workingSet; private IWorkingSetManager workingSetManager; @Override protected void setUp() throws Exception { workingSetManager = Workbench.getInstance().getWorkingSetManager(); root = ResourcesPlugin.getWorkspace().getRoot(); TestFixture.resetTaskList(); } @Override protected void tearDown() throws Exception { if (workingSet != null) { workingSetManager.removeWorkingSet(workingSet); } if (project != null) { ResourceTestUtil.deleteProject(project); } } public void testDeleteQuery() { MockRepositoryQuery query = new MockRepositoryQuery("description"); TaskList taskList = TasksUiPlugin.getTaskList(); taskList.addQuery(query); workingSet = createWorkingSet(query); assertTrue(Arrays.asList(workingSet.getElements()).contains(query)); TasksUiPlugin.getTaskList().deleteQuery(query); assertFalse(Arrays.asList(workingSet.getElements()).contains(query)); } public void testRenameQuery() { MockRepositoryQuery query = new MockRepositoryQuery("description"); TaskList taskList = TasksUiPlugin.getTaskList(); taskList.addQuery(query); workingSet = createWorkingSet(query); assertTrue(workingSet.getElements().length == 1); IAdaptable[] elements = workingSet.getElements(); assertTrue(elements.length == 1); assertTrue(elements[0] instanceof MockRepositoryQuery); assertTrue(((MockRepositoryQuery) elements[0]).getHandleIdentifier().equals("description")); assertTrue(Arrays.asList(workingSet.getElements()).contains(query)); query.setHandleIdentifier("Test"); assertTrue(workingSet.getElements().length == 1); elements = workingSet.getElements(); assertTrue(elements.length == 1); assertTrue(elements[0] instanceof MockRepositoryQuery); assertTrue(((MockRepositoryQuery) elements[0]).getHandleIdentifier().equals("Test")); assertTrue(Arrays.asList(workingSet.getElements()).contains(query)); } // XXX see bug 212962 // public void testRenameQuery() { // MockRepositoryQuery query = new MockRepositoryQuery("description"); // TaskList taskList = TasksUiPlugin.getTaskList(); // taskList.addQuery(query); // workingSet = createWorkingSet(query); // // TasksUiPlugin.getTaskList().deleteQuery(query); // query = new MockRepositoryQuery("newDescription"); // TasksUiPlugin.getTaskList().addQuery(query); // assertTrue(Arrays.asList(workingSet.getElements()).contains(query)); // } // // public void testEditQuery() { // MockRepositoryQuery query = new MockRepositoryQuery("description"); // TaskList taskList = TasksUiPlugin.getTaskList(); // taskList.addQuery(query); // workingSet = createWorkingSet(query); // // TasksUiPlugin.getTaskList().deleteQuery(query); // TasksUiPlugin.getTaskList().addQuery(query); // assertTrue(Arrays.asList(workingSet.getElements()).contains(query)); // } public void testRenameProject() throws Exception { createProject("Test Rename"); workingSet = createWorkingSet(project); WorkspaceModifyOperation op = new WorkspaceModifyOperation() { @Override protected void execute(IProgressMonitor monitor) throws CoreException, InvocationTargetException, InterruptedException { IProjectDescription description = new ProjectDescription(); description.setName("New Name"); project.move(description, true, new NullProgressMonitor()); } }; op.run(new NullProgressMonitor()); IProject oldProject = root.getProject("Test Rename"); IProject newProject = root.getProject("New Name"); assertFalse(Arrays.asList(workingSet.getElements()).contains(oldProject)); assertTrue(Arrays.asList(workingSet.getElements()).contains(newProject)); } private void createProject(String name) throws CoreException { project = root.getProject(name); project.create(null); project.open(null); } private IWorkingSet createWorkingSet(IAdaptable element) { IWorkingSet workingSet = workingSetManager.createWorkingSet("Task Working Set", new IAdaptable[] { element }); workingSet.setId(TaskWorkingSetUpdater.ID_TASK_WORKING_SET); assertTrue(Arrays.asList(workingSet.getElements()).contains(element)); workingSetManager.addWorkingSet(workingSet); return workingSet; } }