blob: 8ce689e2ec3a30ca3d20391be251d99b85dd1018 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2014 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.util;
import java.net.MalformedURLException;
import java.net.URL;
import junit.framework.TestCase;
import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryManager;
import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin;
import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector;
import org.eclipse.mylyn.tasks.core.IRepositoryElement;
import org.eclipse.mylyn.tasks.core.ITask;
import org.eclipse.mylyn.tasks.core.TaskRepository;
import org.eclipse.mylyn.tasks.tests.connector.MockRepositoryConnector;
import org.eclipse.mylyn.tasks.tests.connector.MockTask;
public class MockRepositoryConnectorTestCase extends TestCase {
protected AbstractRepositoryConnector connectorWithUrl;
protected AbstractRepositoryConnector connectorWithBrowserUrl;
protected TaskRepository repositoryWithUrl;
protected TaskRepository repositoryWithBrowserUrl;
protected MockTask taskWithUrl;
protected MockTask taskWithBrowserUrl;
protected class MockRepositoryWithUrl extends MockRepositoryConnector {
public static final String CONNECTOR_KIND = "mock-with-url";
public static final String REPOSITORY_URL = "http://mock-repo.com";
@Override
public String getConnectorKind() {
return CONNECTOR_KIND;
}
@Override
public String getTaskUrl(String repositoryUrl, String taskId) {
return repositoryUrl + "/tickets/" + taskId;
}
}
protected class MockRepositoryWithBrowserUrl extends MockRepositoryConnector {
public static final String CONNECTOR_KIND = "mock-with-browser";
public static final String REPOSITORY_URL = "http://mock-repo-evolved.com";
@Override
public String getConnectorKind() {
return CONNECTOR_KIND;
}
@Override
public String getTaskUrl(String repositoryUrl, String taskId) {
return "URI://mock-repo/id/" + taskId;
}
@Override
public URL getBrowserUrl(TaskRepository repository, IRepositoryElement element) {
if (element instanceof ITask) {
try {
return new URL(repository.getRepositoryUrl() + "/tickets/" + ((ITask) element).getTaskId());
} catch (MalformedURLException e) {
return null;
}
}
return null;
}
}
protected MockTask createMockTaskForRepository(final TaskRepository repository, String taskId) {
return new MockTask(repository.getRepositoryUrl(), taskId) {
@Override
public String getConnectorKind() {
return repository.getConnectorKind();
}
@Override
public String getUrl() {
AbstractRepositoryConnector connector = TasksUiPlugin.getRepositoryManager().getRepositoryConnector(
getConnectorKind());
return connector.getTaskUrl(getRepositoryUrl(), getTaskId());
}
};
}
@Override
protected void setUp() throws Exception {
TaskRepositoryManager manager = TasksUiPlugin.getRepositoryManager();
connectorWithUrl = new MockRepositoryWithUrl();
connectorWithBrowserUrl = new MockRepositoryWithBrowserUrl();
manager.addRepositoryConnector(connectorWithUrl);
manager.addRepositoryConnector(connectorWithBrowserUrl);
repositoryWithUrl = new TaskRepository(MockRepositoryWithUrl.CONNECTOR_KIND,
MockRepositoryWithUrl.REPOSITORY_URL);
repositoryWithBrowserUrl = new TaskRepository(MockRepositoryWithBrowserUrl.CONNECTOR_KIND,
MockRepositoryWithBrowserUrl.REPOSITORY_URL);
manager.addRepository(repositoryWithUrl);
manager.addRepository(repositoryWithBrowserUrl);
taskWithUrl = createMockTaskForRepository(repositoryWithUrl, "123");
TasksUiPlugin.getTaskList().addTask(taskWithUrl);
taskWithBrowserUrl = createMockTaskForRepository(repositoryWithBrowserUrl, "123");
TasksUiPlugin.getTaskList().addTask(taskWithBrowserUrl);
}
@Override
protected void tearDown() throws Exception {
TaskRepositoryManager manager = TasksUiPlugin.getRepositoryManager();
manager.removeRepository(repositoryWithUrl);
manager.removeRepository(repositoryWithBrowserUrl);
manager.removeRepositoryConnector(MockRepositoryWithUrl.CONNECTOR_KIND);
manager.removeRepositoryConnector(MockRepositoryWithBrowserUrl.CONNECTOR_KIND);
}
}