blob: 1a1da129d0f32a50302e795f8db00b79a79897ec [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;
import junit.framework.TestCase;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.mylyn.internal.tasks.core.AbstractTask;
import org.eclipse.mylyn.internal.tasks.core.ITasksCoreConstants;
import org.eclipse.mylyn.internal.tasks.core.RepositoryQuery;
import org.eclipse.mylyn.internal.tasks.core.TaskList;
import org.eclipse.mylyn.internal.tasks.ui.RefactorRepositoryUrlOperation;
import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin;
import org.eclipse.mylyn.tasks.core.IRepositoryQuery;
import org.eclipse.mylyn.tasks.core.ITask;
import org.eclipse.mylyn.tasks.core.TaskRepository;
import org.eclipse.mylyn.tasks.core.data.ITaskDataWorkingCopy;
import org.eclipse.mylyn.tasks.core.data.TaskAttributeMapper;
import org.eclipse.mylyn.tasks.core.data.TaskData;
import org.eclipse.mylyn.tasks.tests.connector.MockRepositoryConnector;
import org.eclipse.mylyn.tasks.tests.connector.MockRepositoryQuery;
import org.eclipse.mylyn.tasks.tests.connector.MockTask;
import org.eclipse.mylyn.tasks.ui.TasksUi;
import org.eclipse.mylyn.tasks.ui.TasksUiUtil;
/**
* @author Robert Elves
* @author Steffen Pingel
*/
public class RefactorRepositoryUrlOperationTest extends TestCase {
private TaskList taskList;
@Override
protected void setUp() throws Exception {
super.setUp();
taskList = TasksUiPlugin.getTaskList();
TaskTestUtil.resetTaskList();
}
public void testMigrateQueryUrlHandles() throws Exception {
RepositoryQuery query = new MockRepositoryQuery("mquery");
query.setRepositoryUrl("http://foo.bar");
query.setUrl("http://foo.bar/b");
taskList.addQuery(query);
assertTrue(taskList.getRepositoryQueries("http://foo.bar").size() > 0);
new RefactorRepositoryUrlOperation("http://foo.bar", "http://bar.baz").run(new NullProgressMonitor());
assertTrue(taskList.getRepositoryQueries("http://foo.bar").size() == 0);
assertTrue(taskList.getRepositoryQueries("http://bar.baz").size() > 0);
IRepositoryQuery changedQuery = taskList.getRepositoryQueries("http://bar.baz").iterator().next();
assertEquals("http://bar.baz/b", changedQuery.getUrl());
}
public void testMigrateQueryHandles() throws Exception {
RepositoryQuery query = new MockRepositoryQuery("mquery");
query.setRepositoryUrl("http://a");
taskList.addQuery(query);
new RefactorRepositoryUrlOperation("http://a", "http://b").run(new NullProgressMonitor());
assertFalse(taskList.getRepositoryQueries("http://b").isEmpty());
assertTrue(taskList.getRepositoryQueries("http://a").isEmpty());
}
public void testMigrateTaskHandles() throws Exception {
AbstractTask task = new MockTask("http://a", "123");
AbstractTask task2 = new MockTask("http://other", "other");
taskList.addTask(task);
taskList.addTask(task2);
TaskRepository repository = new TaskRepository(MockRepositoryConnector.CONNECTOR_KIND, "http://a");
TasksUi.getRepositoryManager().addRepository(repository);
TaskRepository repository2 = new TaskRepository(MockRepositoryConnector.CONNECTOR_KIND, "http://other");
TasksUi.getRepositoryManager().addRepository(repository2);
try {
TaskData taskData = new TaskData(new TaskAttributeMapper(repository), task.getConnectorKind(),
task.getRepositoryUrl(), task.getTaskId());
TasksUiPlugin.getTaskDataManager().putUpdatedTaskData(task, taskData, true);
TaskData taskData2 = new TaskData(new TaskAttributeMapper(repository2), task2.getConnectorKind(),
task2.getRepositoryUrl(), task2.getTaskId());
taskData2.getRoot().createAttribute("comment").setValue("TEST");
TasksUiPlugin.getTaskDataManager().putUpdatedTaskData(task2, taskData2, true);
new RefactorRepositoryUrlOperation("http://a", "http://b").run(new NullProgressMonitor());
repository.setRepositoryUrl("http://b");
assertNull(taskList.getTask("http://a-123"));
assertNotNull(taskList.getTask("http://b-123"));
assertNotNull(TasksUi.getTaskDataManager().getTaskData(task));
TaskData otherData = TasksUi.getTaskDataManager().getTaskData(task2);
assertNotNull(otherData);
assertEquals("TEST", otherData.getRoot().getAttribute("comment").getValue());
} finally {
TasksUiPlugin.getTaskDataManager().deleteTaskData(task);
TasksUiPlugin.getTaskDataManager().deleteTaskData(task2);
}
}
public void testMigrateTaskHandlesWithExplicitSet() throws Exception {
AbstractTask task = new MockTask("http://aa", "123");
task.setUrl("http://aa/task/123");
taskList.addTask(task);
new RefactorRepositoryUrlOperation("http://aa", "http://bb").run(new NullProgressMonitor());
assertNull(taskList.getTask("http://aa-123"));
assertNotNull(taskList.getTask("http://bb-123"));
assertEquals("http://bb/task/123", task.getUrl());
}
public void testMigrateTaskHandlesUnsubmittedTask() throws Exception {
ITask task = TasksUiUtil.createOutgoingNewTask(MockRepositoryConnector.CONNECTOR_KIND, "http://a");
String handleIdentifier = task.getHandleIdentifier();
taskList.addTask(task);
assertEquals("http://a", task.getAttribute(ITasksCoreConstants.ATTRIBUTE_OUTGOING_NEW_REPOSITORY_URL));
TaskRepository repository = new TaskRepository(MockRepositoryConnector.CONNECTOR_KIND, "http://a");
TasksUi.getRepositoryManager().addRepository(repository);
try {
TaskData taskData = new TaskData(new TaskAttributeMapper(repository), repository.getConnectorKind(),
repository.getRepositoryUrl(), "");
ITaskDataWorkingCopy workingCopy = TasksUi.getTaskDataManager().createWorkingCopy(task, taskData);
workingCopy.save(null, null);
new RefactorRepositoryUrlOperation("http://a", "http://b").run(new NullProgressMonitor());
repository.setRepositoryUrl("http://b");
assertEquals(task, taskList.getTask(handleIdentifier));
assertEquals("http://b", task.getAttribute(ITasksCoreConstants.ATTRIBUTE_OUTGOING_NEW_REPOSITORY_URL));
taskData = TasksUi.getTaskDataManager().getTaskData(task);
assertNotNull(taskData);
assertEquals("http://b", taskData.getRepositoryUrl());
} finally {
TasksUiPlugin.getTaskDataManager().deleteTaskData(task);
}
}
}