diff options
Diffstat (limited to 'org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests')
18 files changed, 617 insertions, 859 deletions
diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/AllTracTests.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/AllTracTests.java index bfa9a1948..20a20c82a 100644 --- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/AllTracTests.java +++ b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/AllTracTests.java @@ -8,6 +8,9 @@ package org.eclipse.mylyn.trac.tests; +import junit.framework.Test; +import junit.framework.TestSuite; + import org.eclipse.mylyn.trac.tests.client.TracClientFactoryTest; import org.eclipse.mylyn.trac.tests.client.TracClientProxyTest; import org.eclipse.mylyn.trac.tests.client.TracSearchTest; @@ -17,10 +20,6 @@ import org.eclipse.mylyn.trac.tests.client.TracWebClientTest; import org.eclipse.mylyn.trac.tests.client.TracXmlRpcClientSearchTest; import org.eclipse.mylyn.trac.tests.client.TracXmlRpcClientTest; -import junit.framework.Test; -import junit.framework.TestSuite; - - /** * @author Mik Kersten * @author Steffen Pingel @@ -37,16 +36,16 @@ public class AllTracTests { suite.addTestSuite(TracWebClientTest.class); suite.addTestSuite(TracWebClientSearchTest.class); suite.addTestSuite(TracClientFactoryTest.class); + suite.addTestSuite(TracClientProxyTest.class); suite.addTestSuite(TracRepositoryConnectorTest.class); - suite.addTestSuite(TracQueryTest.class); + suite.addTestSuite(TracUtilTest.class); suite.addTestSuite(TracRepositoryQueryTest.class); suite.addTestSuite(TracClientManagerTest.class); suite.addTestSuite(TracAttachmentHandlerTest.class); - suite.addTestSuite(RepositorySearchQueryTest.class); + suite.addTestSuite(RepositorySearchTest.class); suite.addTestSuite(TracTaskDataHandlerTest.class); - suite.addTestSuite(TracTaskTest.class); + suite.addTestSuite(TracTaskEditorTest.class); suite.addTestSuite(TracRepositorySettingsPageTest.class); - suite.addTestSuite(TracClientProxyTest.class); suite.addTestSuite(TracHyperlinkUtilTest.class); // $JUnit-END$ return suite; diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/MockAttachment.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/MockAttachment.java deleted file mode 100644 index cd44fec39..000000000 --- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/MockAttachment.java +++ /dev/null @@ -1,49 +0,0 @@ -/******************************************************************************* - * 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.trac.tests; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; - -import org.eclipse.mylyn.internal.tasks.core.deprecated.ITaskAttachment; - -public class MockAttachment implements ITaskAttachment { - - private final byte[] data; - - public MockAttachment(byte[] data) { - this.data = data; - } - - public InputStream createInputStream() throws IOException { - return new ByteArrayInputStream(data); - } - - public String getContentType() { - return "application/binary"; - } - - public String getDescription() { - return "description"; - } - - public String getFilename() { - return "filename.txt"; - } - - public long getLength() { - return data.length; - } - - public boolean isPatch() { - return false; - } - -} diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/RepositorySearchQueryTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/RepositorySearchTest.java index 4ea97a1e2..73c8673d0 100644 --- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/RepositorySearchQueryTest.java +++ b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/RepositorySearchTest.java @@ -23,8 +23,10 @@ import org.eclipse.mylyn.internal.trac.core.TracCorePlugin; import org.eclipse.mylyn.internal.trac.core.client.ITracClient; import org.eclipse.mylyn.internal.trac.core.client.ITracClient.Version; import org.eclipse.mylyn.internal.trac.core.model.TracSearch; +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.ui.TasksUi; import org.eclipse.mylyn.trac.tests.support.TestFixture; import org.eclipse.mylyn.trac.tests.support.TracTestConstants; import org.eclipse.mylyn.trac.tests.support.XmlRpcServer.TestData; @@ -32,17 +34,15 @@ import org.eclipse.mylyn.trac.tests.support.XmlRpcServer.TestData; /** * @author Steffen Pingel */ -public class RepositorySearchQueryTest extends TestCase { +public class RepositorySearchTest extends TestCase { private TestData data; private TaskRepositoryManager manager; -// private TracRepositoryConnector connector; - private TaskRepository repository; - public RepositorySearchQueryTest() { + public RepositorySearchTest() { } @Override @@ -52,8 +52,6 @@ public class RepositorySearchQueryTest extends TestCase { data = TestFixture.init010(); manager = TasksUiPlugin.getRepositoryManager(); manager.clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath()); - -// connector = (TracRepositoryConnector) manager.getRepositoryConnector(TracUiPlugin.REPOSITORY_KIND); } protected void init(String url, Version version) { @@ -74,15 +72,14 @@ public class RepositorySearchQueryTest extends TestCase { TracSearch search = new TracSearch(); String queryUrl = repository.getRepositoryUrl() + ITracClient.QUERY_URL + search.toUrl(); - TracRepositoryQuery query = new TracRepositoryQuery(repository.getRepositoryUrl(), queryUrl, "description"); - SearchHitCollector collector = new SearchHitCollector(TasksUiPlugin.getTaskList(), - repository, query); - + IRepositoryQuery query = TasksUi.getRepositoryModel().createRepositoryQuery(repository); + query.setUrl(queryUrl); + SearchHitCollector collector = new SearchHitCollector(TasksUiPlugin.getTaskList(), repository, query); collector.run(new NullProgressMonitor()); + assertEquals(data.tickets.size(), collector.getTasks().size()); for (ITask task : collector.getTasks()) { assertEquals(TracTestConstants.TEST_TRAC_096_URL, task.getRepositoryUrl()); } - assertEquals(data.tickets.size(), collector.getTasks().size()); } } diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracAttachmentHandlerTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracAttachmentHandlerTest.java index e0ec1fce1..7c0cd201d 100644 --- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracAttachmentHandlerTest.java +++ b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracAttachmentHandlerTest.java @@ -9,34 +9,26 @@ package org.eclipse.mylyn.trac.tests; import java.io.File; -import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; +import java.util.List; import junit.framework.TestCase; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.NullProgressMonitor; -import org.eclipse.mylyn.commons.net.AuthenticationCredentials; -import org.eclipse.mylyn.commons.net.AuthenticationType; -import org.eclipse.mylyn.context.tests.support.TestUtil; -import org.eclipse.mylyn.context.tests.support.TestUtil.Credentials; -import org.eclipse.mylyn.context.tests.support.TestUtil.PrivilegeLevel; -import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryManager; -import org.eclipse.mylyn.internal.tasks.core.deprecated.AbstractAttachmentHandler; -import org.eclipse.mylyn.internal.tasks.core.deprecated.FileAttachment; -import org.eclipse.mylyn.internal.tasks.core.deprecated.RepositoryTaskData; -import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; -import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal; +import org.eclipse.mylyn.internal.tasks.core.data.FileTaskAttachmentSource; import org.eclipse.mylyn.internal.trac.core.TracCorePlugin; import org.eclipse.mylyn.internal.trac.core.TracRepositoryConnector; import org.eclipse.mylyn.internal.trac.core.client.ITracClient; import org.eclipse.mylyn.internal.trac.core.client.ITracClient.Version; -import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector; +import org.eclipse.mylyn.tasks.core.ITask; +import org.eclipse.mylyn.tasks.core.ITaskAttachment; import org.eclipse.mylyn.tasks.core.TaskRepository; +import org.eclipse.mylyn.tasks.core.data.AbstractTaskAttachmentHandler; +import org.eclipse.mylyn.tasks.ui.TasksUi; import org.eclipse.mylyn.trac.tests.support.TestFixture; import org.eclipse.mylyn.trac.tests.support.TracTestConstants; +import org.eclipse.mylyn.trac.tests.support.TracTestUtil; import org.eclipse.mylyn.trac.tests.support.XmlRpcServer.TestData; /** @@ -46,45 +38,22 @@ public class TracAttachmentHandlerTest extends TestCase { private TaskRepository repository; - private TaskRepositoryManager manager; - private TracRepositoryConnector connector; - private AbstractAttachmentHandler attachmentHandler; + private AbstractTaskAttachmentHandler attachmentHandler; private TestData data; @Override protected void setUp() throws Exception { super.setUp(); - - manager = TasksUiPlugin.getRepositoryManager(); - manager.clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath()); data = TestFixture.init010(); - } - - @Override - protected void tearDown() throws Exception { - super.tearDown(); + connector = (TracRepositoryConnector) TasksUi.getRepositoryConnector(TracCorePlugin.CONNECTOR_KIND); + attachmentHandler = connector.getTaskAttachmentHandler(); } protected void init(String url, Version version) { - String kind = TracCorePlugin.CONNECTOR_KIND; - Credentials credentials = TestUtil.readCredentials(PrivilegeLevel.USER); - - repository = new TaskRepository(kind, url); - repository.setCredentials(AuthenticationType.REPOSITORY, new AuthenticationCredentials(credentials.username, - credentials.password), false); - repository.setTimeZoneId(ITracClient.TIME_ZONE); - repository.setCharacterEncoding(ITracClient.CHARSET); - repository.setVersion(version.name()); - - manager.addRepository(repository); - - AbstractRepositoryConnector abstractConnector = manager.getRepositoryConnector(kind); - connector = (TracRepositoryConnector) abstractConnector; - - // FIXME attachmentHandler = connector.getAttachmentHandler(); + repository = TracTestUtil.init(url, version); } public void testDownloadAttachmentXmlRpc010() throws Exception { @@ -97,21 +66,12 @@ public class TracAttachmentHandlerTest extends TestCase { private void downloadAttachmentXmlRpc(String url) throws Exception { init(url, Version.XML_RPC); - TracTask task = (TracTask) TasksUiInternal.createTask(repository, data.attachmentTicketId + "", - new NullProgressMonitor()); - TasksUiInternal.synchronizeTask(connector, task, true, null); - RepositoryTaskData taskData = TasksUiPlugin.getTaskDataStorageManager().getNewTaskData(task.getRepositoryUrl(), - task.getTaskId()); - - assertTrue(taskData.getAttachments().size() > 0); - File file = File.createTempFile("attachment", null); - file.deleteOnExit(); - attachmentHandler.downloadAttachment(repository, taskData.getAttachments().get(0), new FileOutputStream(file), - new NullProgressMonitor()); - - byte[] result = new byte[6]; - InputStream in = new FileInputStream(file); + ITask task = TracTestUtil.createTask(repository, data.attachmentTicketId + ""); + List<ITaskAttachment> attachments = TracTestUtil.getTaskAttachments(task); + assertTrue(attachments.size() > 0); + InputStream in = attachmentHandler.getContent(repository, task, attachments.get(0).getTaskAttribute(), null); try { + byte[] result = new byte[6]; in.read(result); assertEquals("Mylar\n", new String(result)); assertEquals(-1, in.read()); @@ -130,15 +90,10 @@ public class TracAttachmentHandlerTest extends TestCase { private void getAttachmentDataXmlRpc(String url) throws Exception { init(url, Version.XML_RPC); - TracTask task = (TracTask) TasksUiInternal.createTask(repository, data.attachmentTicketId + "", - new NullProgressMonitor()); - TasksUiInternal.synchronizeTask(connector, task, true, null); - RepositoryTaskData taskData = TasksUiPlugin.getTaskDataStorageManager().getNewTaskData(task.getRepositoryUrl(), - task.getTaskId()); - - assertTrue(taskData.getAttachments().size() > 0); - InputStream in = attachmentHandler.getAttachmentAsStream(repository, taskData.getAttachments().get(0), - new NullProgressMonitor()); + ITask task = TracTestUtil.createTask(repository, data.attachmentTicketId + ""); + List<ITaskAttachment> attachments = TracTestUtil.getTaskAttachments(task); + assertTrue(attachments.size() > 0); + InputStream in = attachmentHandler.getContent(repository, task, attachments.get(0).getTaskAttribute(), null); byte[] result = new byte[6]; try { in.read(result); @@ -158,8 +113,7 @@ public class TracAttachmentHandlerTest extends TestCase { private void uploadAttachmentXmlRpc(String url) throws Exception { init(url, Version.XML_RPC); - TracTask task = (TracTask) TasksUiInternal.createTask(repository, data.attachmentTicketId + "", - new NullProgressMonitor()); + ITask task = TracTestUtil.createTask(repository, data.attachmentTicketId + ""); File file = File.createTempFile("attachment", null); file.deleteOnExit(); OutputStream out = new FileOutputStream(file); @@ -168,39 +122,41 @@ public class TracAttachmentHandlerTest extends TestCase { } finally { out.close(); } - FileAttachment attachment = new FileAttachment(file); - attachment.setDescription(""); - attachmentHandler.uploadAttachment(repository, task, attachment, "comment", new NullProgressMonitor()); + attachmentHandler.postContent(repository, task, new FileTaskAttachmentSource(file), "comment", null, null); ITracClient client = connector.getClientManager().getTracClient(repository); InputStream in = client.getAttachmentData(data.attachmentTicketId, file.getName(), null); - byte[] result = new byte[5]; - in.read(result); - assertEquals("Mylar", new String(result)); + try { + byte[] result = new byte[5]; + in.read(result); + assertEquals("Mylar", new String(result)); + } finally { + in.close(); + } } - public void testCanUploadAttachmentXmlRpc() throws CoreException { + public void testCanUploadAttachmentXmlRpc() throws Exception { init(TracTestConstants.TEST_TRAC_010_URL, Version.XML_RPC); - TracTask task = (TracTask) TasksUiInternal.createTask(repository, data.attachmentTicketId + "", null); - assertTrue(attachmentHandler.canUploadAttachment(repository, task)); + ITask task = TracTestUtil.createTask(repository, data.attachmentTicketId + ""); + assertTrue(attachmentHandler.canPostContent(repository, task)); } - public void testCanUploadAttachmentWeb() throws CoreException { + public void testCanUploadAttachmentWeb() throws Exception { init(TracTestConstants.TEST_TRAC_010_URL, Version.TRAC_0_9); - TracTask task = (TracTask) TasksUiInternal.createTask(repository, data.attachmentTicketId + "", null); - assertFalse(attachmentHandler.canUploadAttachment(repository, task)); + ITask task = TracTestUtil.createTask(repository, data.attachmentTicketId + ""); + assertFalse(attachmentHandler.canPostContent(repository, task)); } public void testCanDownloadAttachmentXmlRpc() throws Exception { init(TracTestConstants.TEST_TRAC_010_URL, Version.XML_RPC); - TracTask task = (TracTask) TasksUiInternal.createTask(repository, data.attachmentTicketId + "", null); - assertTrue(attachmentHandler.canDownloadAttachment(repository, task)); + ITask task = TracTestUtil.createTask(repository, data.attachmentTicketId + ""); + assertTrue(attachmentHandler.canGetContent(repository, task)); } public void testCanDownloadAttachmentWeb() throws Exception { init(TracTestConstants.TEST_TRAC_010_URL, Version.TRAC_0_9); - TracTask task = (TracTask) TasksUiInternal.createTask(repository, data.attachmentTicketId + "", null); - assertFalse(attachmentHandler.canDownloadAttachment(repository, task)); + ITask task = TracTestUtil.createTask(repository, data.attachmentTicketId + ""); + assertFalse(attachmentHandler.canGetContent(repository, task)); } } diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracQueryTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracQueryTest.java deleted file mode 100644 index ac6f80950..000000000 --- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracQueryTest.java +++ /dev/null @@ -1,34 +0,0 @@ -/******************************************************************************* - * 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.trac.tests; - -import junit.framework.TestCase; - -import org.eclipse.mylyn.internal.trac.core.client.ITracClient; -import org.eclipse.mylyn.internal.trac.core.model.TracSearch; - -/** - * @author Steffen Pingel - */ -public class TracQueryTest extends TestCase { - - private TracRepositoryQuery createQuery(String parameter) { - // FIXME: remove this external depencency - String url = "http://oss.steffenpingel.de/mylar-trac-connector"; - return new TracRepositoryQuery(url, url + ITracClient.QUERY_URL + parameter, "description"); - } - - public void testGetTracSearch() { - String queryParameter = "&order=priority&status=new&status=assigned&status=reopened&milestone=M1&owner=%7E%C3%A4%C3%B6%C3%BC"; - TracRepositoryQuery query = createQuery(queryParameter); - TracSearch search = query.getTracSearch(); - assertEquals(queryParameter, search.toUrl()); - } - -} diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracRepositoryConnectorTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracRepositoryConnectorTest.java index 8ddd2a0af..49736f899 100644 --- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracRepositoryConnectorTest.java +++ b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracRepositoryConnectorTest.java @@ -21,31 +21,33 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.jface.wizard.WizardDialog; -import org.eclipse.mylyn.commons.net.AuthenticationCredentials; -import org.eclipse.mylyn.commons.net.AuthenticationType; -import org.eclipse.mylyn.context.tests.support.TestUtil; -import org.eclipse.mylyn.context.tests.support.TestUtil.Credentials; -import org.eclipse.mylyn.context.tests.support.TestUtil.PrivilegeLevel; import org.eclipse.mylyn.internal.context.core.ContextCorePlugin; import org.eclipse.mylyn.internal.tasks.core.AbstractTask; -import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryManager; -import org.eclipse.mylyn.internal.tasks.core.deprecated.LegacyTaskDataCollector; -import org.eclipse.mylyn.internal.tasks.core.deprecated.RepositoryTaskData; +import org.eclipse.mylyn.internal.tasks.core.TaskTask; import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; -import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal; +import org.eclipse.mylyn.internal.tasks.ui.util.AttachmentUtil; import org.eclipse.mylyn.internal.tasks.ui.wizards.EditRepositoryWizard; import org.eclipse.mylyn.internal.trac.core.TracCorePlugin; import org.eclipse.mylyn.internal.trac.core.TracRepositoryConnector; +import org.eclipse.mylyn.internal.trac.core.TracTaskDataHandler; import org.eclipse.mylyn.internal.trac.core.client.ITracClient; import org.eclipse.mylyn.internal.trac.core.client.ITracClient.Version; +import org.eclipse.mylyn.internal.trac.core.model.TracPriority; import org.eclipse.mylyn.internal.trac.core.model.TracSearch; +import org.eclipse.mylyn.internal.trac.core.model.TracTicket; import org.eclipse.mylyn.internal.trac.core.model.TracVersion; +import org.eclipse.mylyn.internal.trac.core.model.TracTicket.Key; import org.eclipse.mylyn.internal.trac.ui.wizard.TracRepositorySettingsPage; -import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector; +import org.eclipse.mylyn.tasks.core.IRepositoryQuery; +import org.eclipse.mylyn.tasks.core.ITask; +import org.eclipse.mylyn.tasks.core.ITaskAttachment; import org.eclipse.mylyn.tasks.core.TaskRepository; -import org.eclipse.mylyn.tasks.core.TaskRepositoryLocationFactory; +import org.eclipse.mylyn.tasks.core.data.TaskData; +import org.eclipse.mylyn.tasks.core.data.TaskDataCollector; +import org.eclipse.mylyn.tasks.ui.TasksUi; import org.eclipse.mylyn.trac.tests.support.TestFixture; import org.eclipse.mylyn.trac.tests.support.TracTestConstants; +import org.eclipse.mylyn.trac.tests.support.TracTestUtil; import org.eclipse.mylyn.trac.tests.support.XmlRpcServer.TestData; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.PlatformUI; @@ -59,52 +61,20 @@ public class TracRepositoryConnectorTest extends TestCase { private TaskRepository repository; - private TaskRepositoryManager manager; - private TracRepositoryConnector connector; @Override protected void setUp() throws Exception { super.setUp(); - - TracCorePlugin.getDefault() - .getConnector() - .setTaskRepositoryLocationFactory(new TaskRepositoryLocationFactory()); - - manager = TasksUiPlugin.getRepositoryManager(); - manager.clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath()); - data = TestFixture.init010(); - } - - @Override - protected void tearDown() throws Exception { - super.tearDown(); - - // TestFixture.cleanupRepository1(); + connector = (TracRepositoryConnector) TasksUi.getRepositoryConnector(TracCorePlugin.CONNECTOR_KIND); } protected void init(String url, Version version) { - String kind = TracCorePlugin.CONNECTOR_KIND; - Credentials credentials = TestUtil.readCredentials(PrivilegeLevel.USER); - - repository = new TaskRepository(kind, url); - repository.setCredentials(AuthenticationType.REPOSITORY, new AuthenticationCredentials(credentials.username, - credentials.password), false); - repository.setTimeZoneId(ITracClient.TIME_ZONE); - repository.setCharacterEncoding(ITracClient.CHARSET); - repository.setVersion(version.name()); - - manager.addRepository(repository); - - AbstractRepositoryConnector abstractConnector = manager.getRepositoryConnector(kind); - assertEquals(abstractConnector.getConnectorKind(), kind); - - connector = (TracRepositoryConnector) abstractConnector; + repository = TracTestUtil.init(url, version); } public void testGetRepositoryUrlFromTaskUrl() { - TracRepositoryConnector connector = new TracRepositoryConnector(); assertEquals("http://host/repo", connector.getRepositoryUrlFromTaskUrl("http://host/repo/ticket/1")); assertEquals("http://host", connector.getRepositoryUrlFromTaskUrl("http://host/ticket/2342")); assertEquals(null, connector.getRepositoryUrlFromTaskUrl("http://host/repo/2342")); @@ -137,26 +107,14 @@ public class TracRepositoryConnectorTest extends TestCase { } protected void createTaskFromExistingKey() throws CoreException { - String id = data.tickets.get(0).getId() + ""; - AbstractTask task = (AbstractTask) TasksUiInternal.createTask(repository, id, null); + String taskId = data.tickets.get(0).getId() + ""; + TaskData taskData = connector.getTaskData(repository, taskId, null); + ITask task = TasksUi.getRepositoryModel().createTask(repository, taskData.getTaskId()); assertNotNull(task); - assertEquals(TracTask.class, task.getClass()); + connector.updateTaskFromTaskData(repository, task, taskData); + assertEquals(TaskTask.class, task.getClass()); assertTrue(task.getSummary().contains("summary1")); - assertEquals(repository.getRepositoryUrl() + ITracClient.TICKET_URL + id, task.getUrl()); - - try { - task = (AbstractTask) TasksUiInternal.createTask(repository, "does not exist", null); - fail("Expected CoreException"); - } catch (CoreException e) { - } - - // No longer parsing as an integer - // try { - // task = connector.createTaskFromExistingId(repository, - // Integer.MAX_VALUE + ""); - // fail("Expected CoreException"); - // } catch (CoreException e) { - // } + assertEquals(repository.getRepositoryUrl() + ITracClient.TICKET_URL + taskId, task.getUrl()); } public void testClientManagerChangeTaskRepositorySettings() throws MalformedURLException { @@ -207,20 +165,17 @@ public class TracRepositoryConnectorTest extends TestCase { search.addFilter("milestone", "milestone1"); search.addFilter("milestone", "milestone2"); search.setOrderBy("id"); + IRepositoryQuery query = TasksUi.getRepositoryModel().createRepositoryQuery(repository); + query.setUrl(url + ITracClient.QUERY_URL + search.toUrl()); - String queryUrl = url + ITracClient.QUERY_URL + search.toUrl(); - TracRepositoryQuery query = new TracRepositoryQuery(url, queryUrl, "description"); - - //MultiStatus queryStatus = new MultiStatus(TracUiPlugin.PLUGIN_ID, IStatus.OK, "Query result", null); - final List<RepositoryTaskData> result = new ArrayList<RepositoryTaskData>(); - LegacyTaskDataCollector hitCollector = new LegacyTaskDataCollector() { + final List<TaskData> result = new ArrayList<TaskData>(); + TaskDataCollector hitCollector = new TaskDataCollector() { @Override - public void accept(RepositoryTaskData hit) { + public void accept(TaskData hit) { result.add(hit); } }; IStatus queryStatus = connector.performQuery(repository, query, hitCollector, null, new NullProgressMonitor()); - assertTrue(queryStatus.isOK()); assertEquals(3, result.size()); assertEquals(data.tickets.get(0).getId() + "", result.get(0).getTaskId()); @@ -268,44 +223,135 @@ public class TracRepositoryConnectorTest extends TestCase { assertEquals("2.0", versions[1].getName()); } - // FIXME -// public void testContextXmlRpc010() throws Exception { -// init(TracTestConstants.TEST_TRAC_010_URL, Version.XML_RPC); -// TracTask task = (TracTask) TasksUiInternal.createTask(repository, data.attachmentTicketId + "", null); -// TasksUiInternal.synchronizeTask(connector, task, true, null); -// -// //int size = task.getTaskData().getAttachments().size(); -// -// File sourceContextFile = ContextCorePlugin.getContextStore().getFileForContext(task.getHandleIdentifier()); -// sourceContextFile.createNewFile(); -// sourceContextFile.deleteOnExit(); -// -// assertTrue(AttachmentUtil.attachContext(connector.getAttachmentHandler(), repository, task, "", -// new NullProgressMonitor())); -// -// TasksUiInternal.synchronizeTask(connector, task, true, null); -// // TODO attachment may have been overridden therefore size may not have changed -// //assertEquals(size + 1, task.getTaskData().getAttachments().size()); -// -// //RepositoryAttachment attachment = task.getTaskData().getAttachments().get(size); -// //assertTrue(connector.retrieveContext(repository, task, attachment, TasksUiPlugin.getDefault().getProxySettings(), TasksUiPlugin.getDefault().getDataDirectory())); -// } + public void testContextXmlRpc010() throws Exception { + init(TracTestConstants.TEST_TRAC_010_URL, Version.XML_RPC); + String taskId = data.attachmentTicketId + ""; + ITask task = TracTestUtil.createTask(repository, taskId); + File sourceContextFile = ContextCorePlugin.getContextStore().getFileForContext(task.getHandleIdentifier()); + sourceContextFile.createNewFile(); + sourceContextFile.deleteOnExit(); + + boolean result = AttachmentUtil.postContext(connector, repository, task, "", null, null); + assertTrue(result); + + task = TracTestUtil.createTask(repository, taskId); + List<ITaskAttachment> attachments = TracTestUtil.getTaskAttachments(task); + // TODO attachment may have been overridden therefore size may not have changed + //assertEquals(size + 1, task.getTaskData().getAttachments().size()); + ITaskAttachment attachment = attachments.get(attachments.size() - 1); + result = AttachmentUtil.retrieveContext(connector.getTaskAttachmentHandler(), repository, task, attachment, + TasksUiPlugin.getDefault().getDataDirectory(), PlatformUI.getWorkbench().getProgressService()); + assertTrue(result); + } public void testContextWeb096() throws Exception { init(TracTestConstants.TEST_TRAC_096_URL, Version.TRAC_0_9); - TracTask task = (TracTask) TasksUiInternal.createTask(repository, data.attachmentTicketId + "", null); - + String taskId = data.attachmentTicketId + ""; + ITask task = TracTestUtil.createTask(repository, taskId); File sourceContextFile = ContextCorePlugin.getContextStore().getFileForContext(task.getHandleIdentifier()); sourceContextFile.createNewFile(); sourceContextFile.deleteOnExit(); -// try { - // FIXME -// AttachmentUtil.attachContext(connector.getAttachmentHandler(), repository, task, "", -// new NullProgressMonitor()); - fail("expected CoreException"); // operation should not be supported -// } catch (CoreException e) { -// } + try { + AttachmentUtil.postContext(connector, repository, task, "", null, null); + fail("expected CoreException"); // operation should not be supported + } catch (CoreException e) { + } + } + + public void testIsCompleted() { + assertTrue(TracRepositoryConnector.isCompleted("closed")); + assertFalse(TracRepositoryConnector.isCompleted("Closed")); + assertFalse(TracRepositoryConnector.isCompleted("new")); + assertFalse(TracRepositoryConnector.isCompleted("assigned")); + assertFalse(TracRepositoryConnector.isCompleted("reopened")); + assertFalse(TracRepositoryConnector.isCompleted("foobar")); + assertFalse(TracRepositoryConnector.isCompleted("")); + assertFalse(TracRepositoryConnector.isCompleted(null)); + } + + public void testGetTaskPriority() { + assertEquals("P1", TracRepositoryConnector.getTaskPriority("blocker").toString()); + assertEquals("P2", TracRepositoryConnector.getTaskPriority("critical").toString()); + assertEquals("P3", TracRepositoryConnector.getTaskPriority("major").toString()); + assertEquals("P3", TracRepositoryConnector.getTaskPriority(null).toString()); + assertEquals("P3", TracRepositoryConnector.getTaskPriority("").toString()); + assertEquals("P3", TracRepositoryConnector.getTaskPriority("foo bar").toString()); + assertEquals("P4", TracRepositoryConnector.getTaskPriority("minor").toString()); + assertEquals("P5", TracRepositoryConnector.getTaskPriority("trivial").toString()); + } + + public void testGetTaskPriorityFromTracPriorities() { + TracPriority p1 = new TracPriority("a", 1); + TracPriority p2 = new TracPriority("b", 2); + TracPriority p3 = new TracPriority("c", 3); + TracPriority[] priorities = new TracPriority[] { p1, p2, p3 }; + assertEquals("P1", TracRepositoryConnector.getTaskPriority("a", priorities).toString()); + assertEquals("P3", TracRepositoryConnector.getTaskPriority("b", priorities).toString()); + assertEquals("P5", TracRepositoryConnector.getTaskPriority("c", priorities).toString()); + assertEquals("P3", TracRepositoryConnector.getTaskPriority("foo", priorities).toString()); + assertEquals("P3", TracRepositoryConnector.getTaskPriority(null, priorities).toString()); + + p1 = new TracPriority("a", 10); + priorities = new TracPriority[] { p1 }; + assertEquals("P1", TracRepositoryConnector.getTaskPriority("a", priorities).toString()); + assertEquals("P3", TracRepositoryConnector.getTaskPriority("b", priorities).toString()); + assertEquals("P3", TracRepositoryConnector.getTaskPriority(null, priorities).toString()); + + p1 = new TracPriority("1", 10); + p2 = new TracPriority("2", 20); + p3 = new TracPriority("3", 30); + TracPriority p4 = new TracPriority("4", 40); + TracPriority p5 = new TracPriority("5", 70); + TracPriority p6 = new TracPriority("6", 100); + priorities = new TracPriority[] { p1, p2, p3, p4, p5, p6 }; + assertEquals("P1", TracRepositoryConnector.getTaskPriority("1", priorities).toString()); + assertEquals("P1", TracRepositoryConnector.getTaskPriority("2", priorities).toString()); + assertEquals("P2", TracRepositoryConnector.getTaskPriority("3", priorities).toString()); + assertEquals("P2", TracRepositoryConnector.getTaskPriority("4", priorities).toString()); + assertEquals("P4", TracRepositoryConnector.getTaskPriority("5", priorities).toString()); + assertEquals("P5", TracRepositoryConnector.getTaskPriority("6", priorities).toString()); + } + + public void testUpdateTaskFromTaskData() throws Exception { + init(TracTestConstants.TEST_TRAC_010_URL, Version.TRAC_0_9); + + TracTicket ticket = new TracTicket(123); + ticket.putBuiltinValue(Key.DESCRIPTION, "mydescription"); + ticket.putBuiltinValue(Key.PRIORITY, "mypriority"); + ticket.putBuiltinValue(Key.SUMMARY, "mysummary"); + ticket.putBuiltinValue(Key.TYPE, "mytype"); + + TracTaskDataHandler taskDataHandler = (TracTaskDataHandler) connector.getTaskDataHandler(); + ITracClient client = connector.getClientManager().getTracClient(repository); + TaskData taskData = taskDataHandler.createTaskDataFromTicket(client, repository, ticket, null); + ITask task = TasksUi.getRepositoryModel().createTask(repository, taskData.getTaskId()); + + connector.updateTaskFromTaskData(repository, task, taskData); + assertEquals(TracTestConstants.TEST_TRAC_010_URL + ITracClient.TICKET_URL + "123", task.getUrl()); + assertEquals("123", task.getTaskKey()); + assertEquals("mysummary", task.getSummary()); + assertEquals("P3", task.getPriority()); + assertEquals("mytype", task.getTaskKind()); + } + + public void testUpdateTaskFromTaskDataSummaryOnly() throws Exception { + init(TracTestConstants.TEST_TRAC_010_URL, Version.TRAC_0_9); + + TracTicket ticket = new TracTicket(456); + ticket.putBuiltinValue(Key.SUMMARY, "mysummary"); + + TracTaskDataHandler taskDataHandler = (TracTaskDataHandler) connector.getTaskDataHandler(); + ITracClient client = connector.getClientManager().getTracClient(repository); + TaskData taskData = taskDataHandler.createTaskDataFromTicket(client, repository, ticket, null); + ITask task = TasksUi.getRepositoryModel().createTask(repository, taskData.getTaskId()); + + connector.updateTaskFromTaskData(repository, task, taskData); + assertEquals(TracTestConstants.TEST_TRAC_010_URL + ITracClient.TICKET_URL + "456", task.getUrl()); + assertEquals("456", task.getTaskKey()); + assertEquals("mysummary", task.getSummary()); + assertEquals("P3", task.getPriority()); + assertEquals(AbstractTask.DEFAULT_TASK_KIND, task.getTaskKind()); } }
\ No newline at end of file diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracRepositoryQuery.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracRepositoryQuery.java deleted file mode 100644 index efe16b7b4..000000000 --- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracRepositoryQuery.java +++ /dev/null @@ -1,57 +0,0 @@ -/******************************************************************************* - * 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.trac.tests; - -import org.eclipse.mylyn.internal.tasks.core.RepositoryQuery; -import org.eclipse.mylyn.internal.trac.core.TracCorePlugin; -import org.eclipse.mylyn.internal.trac.core.client.ITracClient; -import org.eclipse.mylyn.internal.trac.core.model.TracSearch; - -/** - * @author Steffen Pingel - */ -@Deprecated -public class TracRepositoryQuery extends RepositoryQuery { - - public TracRepositoryQuery(String repositoryUrl, String queryUrl, String description) { - super(description); - - assert queryUrl.startsWith(repositoryUrl + ITracClient.QUERY_URL); - - setRepositoryUrl(repositoryUrl); - setUrl(queryUrl); - } - - @Override - public String getConnectorKind() { - return TracCorePlugin.CONNECTOR_KIND; - } - - public String getQueryParameter() { - String url = getUrl(); - int i = url.indexOf(ITracClient.QUERY_URL); - if (i == -1) { - return null; - } - return url.substring(i + ITracClient.QUERY_URL.length()); - } - - /** - * Creates a <code>TracSearch</code> object from this query. - */ - public TracSearch getTracSearch() { - TracSearch search = new TracSearch(); - String url = getQueryParameter(); - if (url != null) { - search.fromUrl(url); - } - return search; - } - -} diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracRepositoryQueryTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracRepositoryQueryTest.java index 0b48505e5..d36622ca9 100644 --- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracRepositoryQueryTest.java +++ b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracRepositoryQueryTest.java @@ -8,21 +8,21 @@ package org.eclipse.mylyn.trac.tests; -import java.util.Arrays; -import java.util.List; - import junit.framework.TestCase; import org.eclipse.core.runtime.NullProgressMonitor; -import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryManager; +import org.eclipse.mylyn.internal.tasks.core.RepositoryQuery; import org.eclipse.mylyn.internal.tasks.ui.RefactorRepositoryUrlOperation; import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; -import org.eclipse.mylyn.internal.trac.core.TracCorePlugin; import org.eclipse.mylyn.internal.trac.core.client.ITracClient; +import org.eclipse.mylyn.internal.trac.core.client.ITracClient.Version; import org.eclipse.mylyn.internal.trac.core.model.TracSearch; -import org.eclipse.mylyn.internal.trac.core.model.TracSearchFilter; +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.ui.TasksUi; import org.eclipse.mylyn.trac.tests.support.TracTestConstants; +import org.eclipse.mylyn.trac.tests.support.TracTestUtil; /** * @author Steffen Pingel @@ -30,19 +30,17 @@ import org.eclipse.mylyn.trac.tests.support.TracTestConstants; public class TracRepositoryQueryTest extends TestCase { public void testChangeRepositoryUrl() throws Exception { - TaskRepositoryManager manager = TasksUiPlugin.getRepositoryManager(); - manager.clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath()); - - TaskRepository repository = new TaskRepository(TracCorePlugin.CONNECTOR_KIND, - TracTestConstants.TEST_TRAC_096_URL); - manager.addRepository(repository); + TaskRepository repository = TracTestUtil.init(TracTestConstants.TEST_TRAC_096_URL, Version.XML_RPC); TracSearch search = new TracSearch(); String queryUrl = repository.getRepositoryUrl() + ITracClient.QUERY_URL + search.toUrl(); - TracRepositoryQuery query = new TracRepositoryQuery(repository.getRepositoryUrl(), queryUrl, "description"); - TasksUiPlugin.getTaskList().addQuery(query); + IRepositoryQuery query = TasksUi.getRepositoryModel().createRepositoryQuery(repository); + query.setUrl(queryUrl); + TasksUiPlugin.getTaskList().addQuery((RepositoryQuery) query); - TracTask task = new TracTask(TracTestConstants.TEST_TRAC_096_URL, "" + 123, "desc"); + String taskId = "123"; + ITask task = TasksUi.getRepositoryModel().createTask(repository, taskId); + task.setUrl(repository.getRepositoryUrl() + ITracClient.TICKET_URL + taskId); TasksUiPlugin.getTaskList().addTask(task); String oldUrl = repository.getRepositoryUrl(); @@ -52,27 +50,6 @@ public class TracRepositoryQueryTest extends TestCase { assertEquals(newUrl, query.getRepositoryUrl()); assertEquals(newUrl + ITracClient.QUERY_URL + search.toUrl(), query.getUrl()); - assertEquals(newUrl + ITracClient.TICKET_URL + 123, task.getUrl()); - } - - public void testGetFilterList() { - String repositoryUrl = "https://foo.bar/repo"; - String parameterUrl = "&status=new&status=assigned&status=reopened&milestone=0.1"; - String queryUrl = repositoryUrl + ITracClient.QUERY_URL + parameterUrl; - TracRepositoryQuery query = new TracRepositoryQuery(repositoryUrl, queryUrl, "description"); - - TracSearch filterList = query.getTracSearch(); - - assertEquals(parameterUrl, filterList.toUrl()); - assertEquals("&status=new|assigned|reopened&milestone=0.1", filterList.toQuery()); - - List<TracSearchFilter> list = filterList.getFilters(); - TracSearchFilter filter = list.get(0); - assertEquals("status", filter.getFieldName()); - assertEquals(Arrays.asList("new", "assigned", "reopened"), filter.getValues()); - filter = list.get(1); - assertEquals("milestone", filter.getFieldName()); - assertEquals(Arrays.asList("0.1"), filter.getValues()); + assertEquals(newUrl + ITracClient.TICKET_URL + taskId, task.getUrl()); } - } diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracRepositorySettingsPageTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracRepositorySettingsPageTest.java index 3413e61d8..56456155f 100644 --- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracRepositorySettingsPageTest.java +++ b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracRepositorySettingsPageTest.java @@ -11,11 +11,8 @@ package org.eclipse.mylyn.trac.tests; import java.net.Proxy; import org.eclipse.core.runtime.NullProgressMonitor; -import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; -import org.eclipse.mylyn.internal.trac.core.TracCorePlugin; import org.eclipse.mylyn.internal.trac.core.client.ITracClient; import org.eclipse.mylyn.internal.trac.core.client.ITracClient.Version; -import org.eclipse.mylyn.internal.trac.ui.TracConnectorUi; import org.eclipse.mylyn.internal.trac.ui.wizard.TracRepositorySettingsPage; import org.eclipse.mylyn.internal.trac.ui.wizard.TracRepositorySettingsPage.TracValidator; import org.eclipse.mylyn.trac.tests.client.AbstractTracClientTest; @@ -28,8 +25,6 @@ import org.eclipse.ui.PlatformUI; */ public class TracRepositorySettingsPageTest extends AbstractTracClientTest { - private TracConnectorUi connector; - private TracRepositorySettingsPage page; private TracValidator validator; @@ -42,7 +37,6 @@ public class TracRepositorySettingsPageTest extends AbstractTracClientTest { protected void setUp() throws Exception { super.setUp(); - connector = (TracConnectorUi) TasksUiPlugin.getConnectorUi(TracCorePlugin.CONNECTOR_KIND); page = new TracRepositorySettingsPage(null); Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracTask.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracTask.java deleted file mode 100644 index 5675cce02..000000000 --- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracTask.java +++ /dev/null @@ -1,45 +0,0 @@ -/******************************************************************************* - * 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.trac.tests; - -import org.eclipse.mylyn.internal.tasks.core.AbstractTask; -import org.eclipse.mylyn.internal.trac.core.TracCorePlugin; -import org.eclipse.mylyn.internal.trac.core.client.ITracClient; - -/** - * @author Steffen Pingel - */ -@Deprecated -public class TracTask extends AbstractTask { - private boolean supportsSubtasks = false; - - public TracTask(String repositoryUrl, String id, String label) { - super(repositoryUrl, id, label); - setUrl(repositoryUrl + ITracClient.TICKET_URL + id); - } - - @Override - public String getConnectorKind() { - return TracCorePlugin.CONNECTOR_KIND; - } - - @Override - public boolean isLocal() { - return false; - } - - public boolean getSupportsSubtasks() { - return supportsSubtasks; - } - - public void setSupportsSubtasks(boolean supportsSubtasks) { - this.supportsSubtasks = supportsSubtasks; - } - -} diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracTaskDataHandlerTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracTaskDataHandlerTest.java index 180ab4c27..030ff5c6b 100644 --- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracTaskDataHandlerTest.java +++ b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracTaskDataHandlerTest.java @@ -8,30 +8,44 @@ package org.eclipse.mylyn.trac.tests; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Date; import java.util.HashSet; +import java.util.List; import java.util.Set; import junit.framework.TestCase; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.mylyn.commons.net.AuthenticationCredentials; import org.eclipse.mylyn.commons.net.AuthenticationType; -import org.eclipse.mylyn.context.tests.support.TestUtil; -import org.eclipse.mylyn.context.tests.support.TestUtil.Credentials; -import org.eclipse.mylyn.context.tests.support.TestUtil.PrivilegeLevel; -import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryManager; -import org.eclipse.mylyn.internal.tasks.core.deprecated.RepositoryTaskData; +import org.eclipse.mylyn.internal.tasks.core.TaskTask; +import org.eclipse.mylyn.internal.tasks.core.data.TextTaskAttachmentSource; import org.eclipse.mylyn.internal.tasks.core.sync.SynchronizationSession; -import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; -import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal; +import org.eclipse.mylyn.internal.trac.core.TracAttribute; +import org.eclipse.mylyn.internal.trac.core.TracAttributeMapper; import org.eclipse.mylyn.internal.trac.core.TracCorePlugin; import org.eclipse.mylyn.internal.trac.core.TracRepositoryConnector; import org.eclipse.mylyn.internal.trac.core.TracTaskDataHandler; +import org.eclipse.mylyn.internal.trac.core.TracTaskMapper; import org.eclipse.mylyn.internal.trac.core.client.ITracClient; import org.eclipse.mylyn.internal.trac.core.client.ITracClient.Version; import org.eclipse.mylyn.internal.trac.core.model.TracTicket; import org.eclipse.mylyn.internal.trac.core.model.TracTicket.Key; +import org.eclipse.mylyn.internal.trac.core.util.TracUtil; import org.eclipse.mylyn.tasks.core.ITask; +import org.eclipse.mylyn.tasks.core.RepositoryStatus; import org.eclipse.mylyn.tasks.core.TaskRepository; +import org.eclipse.mylyn.tasks.core.data.AbstractTaskAttachmentHandler; +import org.eclipse.mylyn.tasks.core.data.TaskAttribute; +import org.eclipse.mylyn.tasks.core.data.TaskData; +import org.eclipse.mylyn.tasks.core.data.TaskMapper; +import org.eclipse.mylyn.tasks.core.data.TaskRelation; +import org.eclipse.mylyn.tasks.ui.TasksUi; import org.eclipse.mylyn.trac.tests.support.TestFixture; import org.eclipse.mylyn.trac.tests.support.TracTestConstants; import org.eclipse.mylyn.trac.tests.support.TracTestUtil; @@ -46,8 +60,6 @@ public class TracTaskDataHandlerTest extends TestCase { private TaskRepository repository; - private TaskRepositoryManager manager; - private TestData data; private TracTaskDataHandler taskDataHandler; @@ -60,55 +72,47 @@ public class TracTaskDataHandlerTest extends TestCase { @Override protected void setUp() throws Exception { super.setUp(); - data = TestFixture.init010(); - - manager = TasksUiPlugin.getRepositoryManager(); - manager.clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath()); - - connector = (TracRepositoryConnector) manager.getRepositoryConnector(TracCorePlugin.CONNECTOR_KIND); - // FIXME -// taskDataHandler = (TracTaskDataHandler) connector.getLegacyTaskDataHandler(); + connector = (TracRepositoryConnector) TasksUi.getRepositoryConnector(TracCorePlugin.CONNECTOR_KIND); + taskDataHandler = (TracTaskDataHandler) connector.getTaskDataHandler(); } protected void init(String url, Version version) { - Credentials credentials = TestUtil.readCredentials(PrivilegeLevel.USER); - - repository = new TaskRepository(TracCorePlugin.CONNECTOR_KIND, url); - repository.setCredentials(AuthenticationType.REPOSITORY, new AuthenticationCredentials(credentials.username, - credentials.password), false); - repository.setTimeZoneId(ITracClient.TIME_ZONE); - repository.setCharacterEncoding(ITracClient.CHARSET); - repository.setVersion(version.name()); - - manager.addRepository(repository); - + repository = TracTestUtil.init(url, version); client = connector.getClientManager().getTracClient(repository); } - public void testGetChangedSinceLastSyncWeb096() throws Exception { + private SynchronizationSession createSession(ITask... tasks) { + SynchronizationSession session = new SynchronizationSession(); + session.setNeedsPerformQueries(true); + session.setTaskRepository(repository); + session.setFullSynchronization(true); + session.setTasks(new HashSet<ITask>(Arrays.asList(tasks))); + return session; + } + + public void testPreSynchronizationWeb096() throws Exception { init(TracTestConstants.TEST_TRAC_096_URL, Version.TRAC_0_9); - TracTask task = (TracTask) TasksUiInternal.createTask(repository, data.offlineHandlerTicketId + "", null); + ITask task = TracTestUtil.createTask(repository, data.offlineHandlerTicketId + ""); Set<ITask> tasks = new HashSet<ITask>(); tasks.add(task); - SynchronizationSession event = new SynchronizationSession(); - event.setNeedsPerformQueries(true); - event.setTaskRepository(repository); - event.setFullSynchronization(true); - event.setTasks(tasks); + SynchronizationSession session = createSession(); + session.setTasks(tasks); assertEquals(null, repository.getSynchronizationTimeStamp()); - connector.preSynchronization(event, null); - assertTrue(event.needsPerformQueries()); + connector.preSynchronization(session, null); + assertTrue(session.needsPerformQueries()); assertEquals(null, repository.getSynchronizationTimeStamp()); - assertFalse(task.isStale()); + // bug 238043: assertEquals(Collections.emptySet(), session.getStaleTasks()); + assertEquals(null, session.getStaleTasks()); int time = (int) (System.currentTimeMillis() / 1000) + 1; repository.setSynchronizationTimeStamp(time + ""); - connector.preSynchronization(event, null); - assertTrue(event.needsPerformQueries()); - assertFalse(task.isStale()); + connector.preSynchronization(session, null); + assertTrue(session.needsPerformQueries()); + // bug 238043: assertEquals(Collections.emptySet(), session.getStaleTasks()); + assertEquals(null, session.getStaleTasks()); } public void testMarkStaleTasksXmlRpc010() throws Exception { @@ -122,61 +126,51 @@ public class TracTaskDataHandlerTest extends TestCase { } private void markStaleTasks() throws Exception { + SynchronizationSession session; TracTicket ticket = TracTestUtil.createTicket(client, "markStaleTasks"); - TracTask task = (TracTask) TasksUiInternal.createTask(repository, ticket.getId() + "", null); - TasksUiInternal.synchronizeTask(connector, task, true, null); - RepositoryTaskData taskData = TasksUiPlugin.getTaskDataStorageManager().getNewTaskData(task.getRepositoryUrl(), - task.getTaskId()); - - int lastModified = Integer.parseInt(taskData.getLastModified()); - - Set<ITask> tasks = new HashSet<ITask>(); - tasks.add(task); - SynchronizationSession event = new SynchronizationSession(); - event.setNeedsPerformQueries(true); - event.setTaskRepository(repository); - event.setFullSynchronization(true); + ITask task = TracTestUtil.createTask(repository, ticket.getId() + ""); + long lastModified = TracUtil.toTracTime(task.getModificationDate()); // an empty set should not cause contact to the repository repository.setSynchronizationTimeStamp(null); - event.setTasks(new HashSet<ITask>()); - connector.preSynchronization(event, null); - assertTrue(event.needsPerformQueries()); + session = createSession(task); + connector.preSynchronization(session, null); + assertTrue(session.needsPerformQueries()); assertNull(repository.getSynchronizationTimeStamp()); repository.setSynchronizationTimeStamp(null); - event.setTasks(tasks); - connector.preSynchronization(event, null); - assertTrue(event.needsPerformQueries()); - assertTrue(task.isStale()); + session = createSession(task); + connector.preSynchronization(session, null); + assertTrue(session.needsPerformQueries()); + assertEquals(Collections.singleton(task), session.getStaleTasks()); // always returns the ticket because time comparison mode is >= - task.setStale(false); repository.setSynchronizationTimeStamp(lastModified + ""); - connector.preSynchronization(event, null); + session = createSession(task); + connector.preSynchronization(session, null); // TODO this was fixed so it returns false now but only if the // query returns a single task - assertFalse(event.needsPerformQueries()); - assertFalse(task.isStale()); + assertFalse(session.needsPerformQueries()); + // bug 238043: assertEquals(Collections.emptySet(), session.getStaleTasks()); + assertEquals(null, session.getStaleTasks()); - task.setStale(false); repository.setSynchronizationTimeStamp((lastModified + 1) + ""); - event.setNeedsPerformQueries(true); - connector.preSynchronization(event, null); - assertFalse(event.needsPerformQueries()); - assertFalse(task.isStale()); + session = createSession(task); + connector.preSynchronization(session, null); + assertFalse(session.needsPerformQueries()); + // bug 238043: assertEquals(Collections.emptySet(), session.getStaleTasks()); + assertEquals(null, session.getStaleTasks()); // change ticket making sure it gets a new change time Thread.sleep(1000); ticket.putBuiltinValue(Key.DESCRIPTION, lastModified + ""); client.updateTicket(ticket, "comment", null); - task.setStale(false); repository.setSynchronizationTimeStamp((lastModified + 1) + ""); - event.setNeedsPerformQueries(true); - connector.preSynchronization(event, null); - assertTrue(event.needsPerformQueries()); - assertTrue(task.isStale()); + session = createSession(task); + connector.preSynchronization(session, null); + assertTrue(session.needsPerformQueries()); + assertEquals(Collections.singleton(task), session.getStaleTasks()); } public void testMarkStaleTasksNoTimeStampXmlRpc010() throws Exception { @@ -190,233 +184,190 @@ public class TracTaskDataHandlerTest extends TestCase { } private void markStaleTasksNoTimeStamp() throws Exception { - TracTask task = (TracTask) TasksUiInternal.createTask(repository, data.offlineHandlerTicketId + "", null); - Set<ITask> tasks = new HashSet<ITask>(); - tasks.add(task); - SynchronizationSession event = new SynchronizationSession(); - event.setNeedsPerformQueries(true); - event.setTaskRepository(repository); - event.setFullSynchronization(true); - event.setTasks(tasks); + SynchronizationSession session; + ITask task = TracTestUtil.createTask(repository, data.offlineHandlerTicketId + ""); - task.setStale(false); + session = createSession(task); repository.setSynchronizationTimeStamp(null); - connector.preSynchronization(event, null); - assertTrue(event.needsPerformQueries()); - assertTrue(task.isStale()); + connector.preSynchronization(session, null); + assertTrue(session.needsPerformQueries()); + assertEquals(Collections.singleton(task), session.getStaleTasks()); - task.setStale(false); + session = createSession(task); repository.setSynchronizationTimeStamp(""); - connector.preSynchronization(event, null); - assertTrue(event.needsPerformQueries()); - assertTrue(task.isStale()); + connector.preSynchronization(session, null); + assertTrue(session.needsPerformQueries()); + assertEquals(Collections.singleton(task), session.getStaleTasks()); - task.setStale(false); + session = createSession(task); repository.setSynchronizationTimeStamp("0"); - connector.preSynchronization(event, null); - assertTrue(event.needsPerformQueries()); - assertTrue(task.isStale()); + connector.preSynchronization(session, null); + assertTrue(session.needsPerformQueries()); + assertEquals(Collections.singleton(task), session.getStaleTasks()); - task.setStale(false); + session = createSession(task); repository.setSynchronizationTimeStamp("abc"); - connector.preSynchronization(event, null); - assertTrue(event.needsPerformQueries()); - assertTrue(task.isStale()); + connector.preSynchronization(session, null); + assertTrue(session.needsPerformQueries()); + assertEquals(Collections.singleton(task), session.getStaleTasks()); + } + + public void testNonNumericTaskId() { + try { + connector.getTaskData(repository, "abc", null); + fail("Expected CoreException"); + } catch (CoreException e) { + } + } + + public void testAttachmentChangesLastModifiedDate010() throws Exception { + init(TracTestConstants.TEST_TRAC_010_URL, Version.XML_RPC); + attachmentChangesLastModifiedDate(); + } + + public void testAttachmentChangesLastModifiedDate011() throws Exception { + init(TracTestConstants.TEST_TRAC_011_URL, Version.XML_RPC); + attachmentChangesLastModifiedDate(); + } + + private void attachmentChangesLastModifiedDate() throws Exception { + AbstractTaskAttachmentHandler attachmentHandler = connector.getTaskAttachmentHandler(); + ITask task = TracTestUtil.createTask(repository, data.attachmentTicketId + ""); + Date lastModified = task.getModificationDate(); + attachmentHandler.postContent(repository, task, new TextTaskAttachmentSource("abc"), null, null, null); + + task = TracTestUtil.createTask(repository, data.attachmentTicketId + ""); + Date newLastModified = task.getModificationDate(); + assertTrue("Expected " + newLastModified + " to be more recent than " + lastModified, + newLastModified.after(lastModified)); + } + + public void testPostTaskDataInvalidCredentials010() throws Exception { + init(TracTestConstants.TEST_TRAC_010_URL, Version.XML_RPC); + postTaskDataInvalidCredentials(); + } + + public void testPostTaskDataInvalidCredentials011() throws Exception { + init(TracTestConstants.TEST_TRAC_011_URL, Version.XML_RPC); + postTaskDataInvalidCredentials(); } - // FIXME -// public void testNonNumericTaskId() { -// try { -// connector.getLegacyTaskDataHandler().getTaskData(repository, "abc", new NullProgressMonitor()); -// fail("Expected CoreException"); -// } catch (CoreException e) { -// } -// } - -// public void testAttachmentChangesLastModifiedDate010() throws Exception { -// init(TracTestConstants.TEST_TRAC_010_URL, Version.XML_RPC); -// attachmentChangesLastModifiedDate(); -// } -// -// public void testAttachmentChangesLastModifiedDate011() throws Exception { -// init(TracTestConstants.TEST_TRAC_011_URL, Version.XML_RPC); -// attachmentChangesLastModifiedDate(); -// } - -// private void attachmentChangesLastModifiedDate() throws Exception { -// RepositoryTaskData taskData = taskDataHandler.getTaskData(repository, data.attachmentTicketId + "", -// new NullProgressMonitor()); -// TracTask task = new TracTask(repository.getRepositoryUrl(), data.attachmentTicketId + "", ""); -// connector.updateTaskFromTaskData(repository, task, taskData); -// Date lastModified = taskDataHandler.getAttributeFactory(taskData).getDateForAttributeType( -// RepositoryTaskAttribute.DATE_MODIFIED, taskData.getLastModified()); -// -// AbstractAttachmentHandler attachmentHandler = connector.getAttachmentHandler(); -// ITaskAttachment attachment = new MockAttachment("abc".getBytes()); -// attachmentHandler.uploadAttachment(repository, task, attachment, null, new NullProgressMonitor()); -// -// taskData = taskDataHandler.getTaskData(repository, data.attachmentTicketId + "", new NullProgressMonitor()); -// Date newLastModified = taskDataHandler.getAttributeFactory(taskData).getDateForAttributeType( -// RepositoryTaskAttribute.DATE_MODIFIED, taskData.getLastModified()); -// assertTrue("Expected " + newLastModified + " to be more recent than " + lastModified, -// newLastModified.after(lastModified)); -// } -// -// public void testPostTaskDataInvalidCredentials010() throws Exception { -// init(TracTestConstants.TEST_TRAC_010_URL, Version.XML_RPC); -// postTaskDataInvalidCredentials(); -// } -// -// public void testPostTaskDataInvalidCredentials011() throws Exception { -// init(TracTestConstants.TEST_TRAC_011_URL, Version.XML_RPC); -// postTaskDataInvalidCredentials(); -// } -// -// private void postTaskDataInvalidCredentials() throws Exception { -// TracTask task = (TracTask) TasksUiInternal.createTask(repository, data.offlineHandlerTicketId + "", null); -// TasksUiInternal.synchronizeTask(connector, task, true, null); -// RepositoryTaskData taskData = TasksUiPlugin.getTaskDataStorageManager().getNewTaskData(task.getRepositoryUrl(), -// task.getTaskId()); -// -// taskData.setNewComment("new comment"); -// repository.setCredentials(AuthenticationType.REPOSITORY, new AuthenticationCredentials("foo", "bar"), false); -// try { -// taskDataHandler.postTaskData(repository, taskData, new NullProgressMonitor()); -// } catch (CoreException expected) { -// assertEquals(RepositoryStatus.ERROR_REPOSITORY_LOGIN, expected.getStatus().getCode()); -// } -// assertEquals("new comment", taskData.getNewComment()); -// } -// -// public void testCanInitializeTaskData() throws Exception { -// init(TracTestConstants.TEST_TRAC_010_URL, Version.XML_RPC); -// -// TracTask task = new TracTask("", "", ""); -// assertFalse(taskDataHandler.canInitializeSubTaskData(task, null)); -// task.setSupportsSubtasks(true); -// assertTrue(taskDataHandler.canInitializeSubTaskData(task, null)); -// -// RepositoryTaskData taskData = taskDataHandler.getTaskData(repository, data.offlineHandlerTicketId + "", -// new NullProgressMonitor()); -// assertFalse(taskDataHandler.canInitializeSubTaskData(null, taskData)); -// taskData.setAttributeValue(TracTaskDataHandler.ATTRIBUTE_BLOCKED_BY, ""); -// assertTrue(taskDataHandler.canInitializeSubTaskData(null, taskData)); -// -// task.setSupportsSubtasks(false); -// connector.updateTaskFromTaskData(repository, task, taskData); -// assertTrue(taskDataHandler.canInitializeSubTaskData(task, null)); -// } -// -// public void testInitializeSubTaskData() throws Exception { -// init(TracTestConstants.TEST_TRAC_010_URL, Version.XML_RPC); -// -// RepositoryTaskData parentTaskData = taskDataHandler.getTaskData(repository, data.offlineHandlerTicketId + "", -// new NullProgressMonitor()); -// try { -// taskDataHandler.initializeSubTaskData(repository, parentTaskData, parentTaskData, new NullProgressMonitor()); -// fail("expected CoreException"); -// } catch (CoreException expected) { -// } -// -// parentTaskData.setSummary("abc"); -// parentTaskData.setDescription("def"); -// String component = parentTaskData.getAttribute(TracAttribute.COMPONENT.getTracKey()).getOptions().get(0); -// parentTaskData.setAttributeValue(TracAttribute.COMPONENT.getTracKey(), component); -// parentTaskData.setAttributeValue(TracTaskDataHandler.ATTRIBUTE_BLOCKED_BY, ""); -// RepositoryTaskData subTaskData = new RepositoryTaskData(parentTaskData.getAttributeFactory(), -// TracCorePlugin.CONNECTOR_KIND, "", ""); -// subTaskData.setAttributeValue(TracTaskDataHandler.ATTRIBUTE_BLOCKING, ""); -// taskDataHandler.initializeSubTaskData(repository, subTaskData, parentTaskData, new NullProgressMonitor()); -// assertEquals("", subTaskData.getSummary()); -// assertEquals("", subTaskData.getDescription()); -// assertEquals(component, subTaskData.getAttributeValue(TracAttribute.COMPONENT.getTracKey())); -// assertEquals(parentTaskData.getTaskId(), subTaskData.getAttributeValue(TracTaskDataHandler.ATTRIBUTE_BLOCKING)); -// assertEquals("", parentTaskData.getAttributeValue(TracTaskDataHandler.ATTRIBUTE_BLOCKED_BY)); -// } -// -// public void testGetSubTaskIds() throws Exception { -// RepositoryTaskData taskData = new RepositoryTaskData(new TracAttributeMapper(), TracCorePlugin.CONNECTOR_KIND, -// "", ""); -// taskData.setAttributeValue(TracTaskDataHandler.ATTRIBUTE_BLOCKED_BY, "123 456"); -// Set<String> subTaskIds = taskDataHandler.getSubTaskIds(taskData); -// assertEquals(2, subTaskIds.size()); -// assertTrue(subTaskIds.contains("123")); -// assertTrue(subTaskIds.contains("456")); -// -// taskData.setAttributeValue(TracTaskDataHandler.ATTRIBUTE_BLOCKED_BY, "7,8"); -// subTaskIds = taskDataHandler.getSubTaskIds(taskData); -// assertEquals(2, subTaskIds.size()); -// assertTrue(subTaskIds.contains("7")); -// assertTrue(subTaskIds.contains("8")); -// -// taskData.setAttributeValue(TracTaskDataHandler.ATTRIBUTE_BLOCKED_BY, " 7 , 8, "); -// subTaskIds = taskDataHandler.getSubTaskIds(taskData); -// assertEquals(2, subTaskIds.size()); -// assertTrue(subTaskIds.contains("7")); -// assertTrue(subTaskIds.contains("8")); -// -// taskData.setAttributeValue(TracTaskDataHandler.ATTRIBUTE_BLOCKED_BY, "7"); -// subTaskIds = taskDataHandler.getSubTaskIds(taskData); -// assertEquals(1, subTaskIds.size()); -// assertTrue(subTaskIds.contains("7")); -// -// taskData.setAttributeValue(TracTaskDataHandler.ATTRIBUTE_BLOCKED_BY, ""); -// subTaskIds = taskDataHandler.getSubTaskIds(taskData); -// assertEquals(0, subTaskIds.size()); -// -// taskData.setAttributeValue(TracTaskDataHandler.ATTRIBUTE_BLOCKED_BY, " "); -// subTaskIds = taskDataHandler.getSubTaskIds(taskData); -// assertEquals(0, subTaskIds.size()); -// } -// -// public void testUpdateTaskDetails() throws Exception { -// init(TracTestConstants.TEST_TRAC_010_URL, Version.TRAC_0_9); -// -// TracTicket ticket = new TracTicket(123); -// ticket.putBuiltinValue(Key.DESCRIPTION, "mydescription"); -// ticket.putBuiltinValue(Key.PRIORITY, "mypriority"); -// ticket.putBuiltinValue(Key.SUMMARY, "mysummary"); -// ticket.putBuiltinValue(Key.TYPE, "mytype"); -// -// ITracClient client = connector.getClientManager().getTracClient(repository); -// RepositoryTaskData taskData = new RepositoryTaskData(IdentityAttributeFactory.getInstance(), -// TracCorePlugin.CONNECTOR_KIND, repository.getRepositoryUrl(), ticket.getId() + ""); -// taskDataHandler.updateTaskDataFromTicket(taskData, ticket, client); -// -// TracTask task = new TracTask(TracTestConstants.TEST_TRAC_010_URL, "" + 123, "desc"); -// assertEquals(TracTestConstants.TEST_TRAC_010_URL + ITracClient.TICKET_URL + "123", task.getUrl()); -// assertEquals("desc", task.getSummary()); -// -// DefaultTaskSchema schema = new DefaultTaskSchema(taskData); -// schema.applyTo(task); -// -// assertEquals(TracTestConstants.TEST_TRAC_010_URL + ITracClient.TICKET_URL + "123", task.getUrl()); -// assertEquals("123", task.getTaskKey()); -// assertEquals("mysummary", task.getSummary()); -// assertEquals("P3", task.getPriority()); -// assertEquals("mytype", task.getTaskKind()); -// } -// -// public void testUpdateTaskDetailsSummaryOnly() throws InvalidTicketException { -// init(TracTestConstants.TEST_TRAC_010_URL, Version.TRAC_0_9); -// -// TracTicket ticket = new TracTicket(456); -// ticket.putBuiltinValue(Key.SUMMARY, "mysummary"); -// -// TracTask task = new TracTask(TracTestConstants.TEST_TRAC_010_URL, "" + 456, "desc"); -// -// ITracClient client = connector.getClientManager().getTracClient(repository); -// RepositoryTaskData taskData = new RepositoryTaskData(IdentityAttributeFactory.getInstance(), -// TracCorePlugin.CONNECTOR_KIND, repository.getRepositoryUrl(), ticket.getId() + ""); -// taskDataHandler.updateTaskDataFromTicket(taskData, ticket, client); -// DefaultTaskSchema schema = new DefaultTaskSchema(taskData); -// schema.applyTo(task); -// -// assertEquals(TracTestConstants.TEST_TRAC_010_URL + ITracClient.TICKET_URL + "456", task.getUrl()); -// assertEquals("456", task.getTaskKey()); -// assertEquals("mysummary", task.getSummary()); -// assertEquals("P3", task.getPriority()); -// assertEquals(AbstractTask.DEFAULT_TASK_KIND, task.getTaskKind()); -// } + private void postTaskDataInvalidCredentials() throws Exception { + ITask task = TracTestUtil.createTask(repository, data.offlineHandlerTicketId + ""); + TaskData taskData = TasksUi.getTaskDataManager().getTaskData(task); + taskData.getRoot().getMappedAttribute(TaskAttribute.COMMENT_NEW).setValue("new comment"); + repository.setCredentials(AuthenticationType.REPOSITORY, new AuthenticationCredentials("foo", "bar"), false); + try { + taskDataHandler.postTaskData(repository, taskData, null, null); + } catch (CoreException expected) { + assertEquals(RepositoryStatus.ERROR_REPOSITORY_LOGIN, expected.getStatus().getCode()); + } + assertEquals("new comment", taskData.getRoot().getMappedAttribute(TaskAttribute.COMMENT_NEW).getValue()); + } + + public void testCanInitializeTaskData() throws Exception { + init(TracTestConstants.TEST_TRAC_010_URL, Version.XML_RPC); + + ITask task = new TaskTask(TracCorePlugin.CONNECTOR_KIND, "", ""); + assertFalse(taskDataHandler.canInitializeSubTaskData(repository, task)); + task.setAttribute(TracRepositoryConnector.TASK_KEY_SUPPORTS_SUBTASKS, Boolean.TRUE.toString()); + assertTrue(taskDataHandler.canInitializeSubTaskData(repository, task)); + + task = TracTestUtil.createTask(repository, data.offlineHandlerTicketId + ""); + TaskData taskData = taskDataHandler.getTaskData(repository, data.offlineHandlerTicketId + "", null); + assertFalse(taskDataHandler.canInitializeSubTaskData(repository, task)); + + taskData.getRoot().createAttribute(TracTaskDataHandler.ATTRIBUTE_BLOCKED_BY); + connector.updateTaskFromTaskData(repository, task, taskData); + assertTrue(taskDataHandler.canInitializeSubTaskData(repository, task)); + + task.setAttribute(TracRepositoryConnector.TASK_KEY_SUPPORTS_SUBTASKS, Boolean.FALSE.toString()); + connector.updateTaskFromTaskData(repository, task, taskData); + assertTrue(taskDataHandler.canInitializeSubTaskData(repository, task)); + } + + public void testInitializeSubTaskDataInvalidParent() throws Exception { + init(TracTestConstants.TEST_TRAC_010_URL, Version.XML_RPC); + TaskData parentTaskData = taskDataHandler.getTaskData(repository, data.offlineHandlerTicketId + "", + new NullProgressMonitor()); + try { + taskDataHandler.initializeSubTaskData(repository, parentTaskData, parentTaskData, null); + fail("expected CoreException"); + } catch (CoreException expected) { + } + } + + public void testInitializeSubTaskData() throws Exception { + init(TracTestConstants.TEST_TRAC_010_URL, Version.XML_RPC); + TaskData parentTaskData = taskDataHandler.getTaskData(repository, data.offlineHandlerTicketId + "", null); + TaskMapper parentTaskMapper = new TracTaskMapper(parentTaskData, null); + parentTaskMapper.setSummary("abc"); + parentTaskMapper.setDescription("def"); + String component = parentTaskData.getRoot() + .getMappedAttribute(TracAttribute.COMPONENT.getTracKey()) + .getOptions() + .get(0); + parentTaskMapper.setComponent(component); + parentTaskData.getRoot().createAttribute(TracTaskDataHandler.ATTRIBUTE_BLOCKED_BY); + TaskData subTaskData = new TaskData(parentTaskData.getAttributeMapper(), TracCorePlugin.CONNECTOR_KIND, "", ""); + subTaskData.getRoot().createAttribute(TracTaskDataHandler.ATTRIBUTE_BLOCKING); + taskDataHandler.initializeSubTaskData(repository, subTaskData, parentTaskData, new NullProgressMonitor()); + TaskMapper subTaskMapper = new TracTaskMapper(subTaskData, null); + assertEquals("", subTaskMapper.getSummary()); + assertEquals("", subTaskMapper.getDescription()); + assertEquals(component, subTaskMapper.getComponent()); + assertEquals(parentTaskData.getTaskId(), subTaskData.getRoot().getMappedAttribute( + TracTaskDataHandler.ATTRIBUTE_BLOCKING).getValue()); + assertEquals("", parentTaskData.getRoot() + .getMappedAttribute(TracTaskDataHandler.ATTRIBUTE_BLOCKED_BY) + .getValue()); + } + + public void testGetSubTaskIds() throws Exception { + TaskData taskData = new TaskData(new TracAttributeMapper(new TaskRepository("", "")), + TracCorePlugin.CONNECTOR_KIND, "", ""); + TaskAttribute blockedBy = taskData.getRoot().createAttribute(TracTaskDataHandler.ATTRIBUTE_BLOCKED_BY); + Collection<String> subTaskIds; + + blockedBy.setValue("123 456"); + subTaskIds = getSubTaskIds(taskData); + assertEquals(2, subTaskIds.size()); + assertTrue(subTaskIds.contains("123")); + assertTrue(subTaskIds.contains("456")); + + blockedBy.setValue("7,8"); + subTaskIds = getSubTaskIds(taskData); + assertEquals(2, subTaskIds.size()); + assertTrue(subTaskIds.contains("7")); + assertTrue(subTaskIds.contains("8")); + + blockedBy.setValue(" 7 , 8, "); + subTaskIds = getSubTaskIds(taskData); + assertEquals(2, subTaskIds.size()); + assertTrue(subTaskIds.contains("7")); + assertTrue(subTaskIds.contains("8")); + + blockedBy.setValue("7"); + subTaskIds = getSubTaskIds(taskData); + assertEquals(1, subTaskIds.size()); + assertTrue(subTaskIds.contains("7")); + + blockedBy.setValue(""); + subTaskIds = getSubTaskIds(taskData); + assertEquals(0, subTaskIds.size()); + + blockedBy.setValue(" "); + subTaskIds = getSubTaskIds(taskData); + assertEquals(0, subTaskIds.size()); + } + + private Collection<String> getSubTaskIds(TaskData taskData) { + List<String> subTaskIds = new ArrayList<String>(); + Collection<TaskRelation> relations = connector.getTaskRelations(taskData); + for (TaskRelation taskRelation : relations) { + subTaskIds.add(taskRelation.getTaskId()); + } + return subTaskIds; + } } diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracTaskEditorTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracTaskEditorTest.java index df482e883..2c953dffa 100644 --- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracTaskEditorTest.java +++ b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracTaskEditorTest.java @@ -10,67 +10,37 @@ package org.eclipse.mylyn.trac.tests; import junit.framework.TestCase; -import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryManager; -import org.eclipse.mylyn.internal.tasks.core.deprecated.AbstractTaskDataHandler; -import org.eclipse.mylyn.internal.trac.core.TracRepositoryConnector; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; +import org.eclipse.mylyn.internal.tasks.ui.views.TaskListView; +import org.eclipse.mylyn.internal.trac.core.client.ITracClient.Version; +import org.eclipse.mylyn.tasks.core.ITask; import org.eclipse.mylyn.tasks.core.TaskRepository; +import org.eclipse.mylyn.tasks.ui.TasksUiUtil; +import org.eclipse.mylyn.trac.tests.support.TracTestConstants; +import org.eclipse.mylyn.trac.tests.support.TracTestUtil; /** * @author Steffen Pingel */ public class TracTaskEditorTest extends TestCase { - private TracRepositoryConnector connector; + public void testGetSelectedRepository() throws Exception { + TaskRepository repository = TracTestUtil.init(TracTestConstants.TEST_TRAC_010_URL, + Version.XML_RPC); - private TaskRepository repository; + ITask task = TracTestUtil.createTask(repository, "1"); + TasksUiPlugin.getTaskList().addTask(task); + TasksUiUtil.openTask(task); - private TaskRepositoryManager manager; + TaskListView taskListView = TaskListView.getFromActivePerspective(); + // force refresh since automatic refresh is delayed + taskListView.getViewer().refresh(); + taskListView.getViewer().expandAll(); + taskListView.getViewer().setSelection(new StructuredSelection(task)); - private AbstractTaskDataHandler taskDataHandler; - - // FIXME -// @Override -// protected void setUp() throws Exception { -// super.setUp(); -// -// manager = TasksUiPlugin.getRepositoryManager(); -// manager.clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath()); -// -// connector = (TracRepositoryConnector) manager.getRepositoryConnector(TracCorePlugin.CONNECTOR_KIND); -// -// taskDataHandler = connector.getLegacyTaskDataHandler(); -// } -// -// protected void init(String url, Version version) { -// Credentials credentials = TestUtil.readCredentials(PrivilegeLevel.USER); -// -// repository = new TaskRepository(TracCorePlugin.CONNECTOR_KIND, url); -// repository.setCredentials(AuthenticationType.REPOSITORY, new AuthenticationCredentials(credentials.username, -// credentials.password), false); -// repository.setTimeZoneId(ITracClient.TIME_ZONE); -// repository.setCharacterEncoding(ITracClient.CHARSET); -// repository.setVersion(version.name()); -// -// manager.addRepository(repository); -// } -// -// public void testGetSelectedRepository() throws Exception { -// init(TracTestConstants.TEST_TRAC_010_URL, Version.XML_RPC); -// -// RepositoryTaskData taskData = taskDataHandler.getTaskData(repository, "1", new NullProgressMonitor()); -// AbstractTask task = connector.createTask(repository.getRepositoryUrl(), taskData.getTaskId(), ""); -// connector.updateTaskFromTaskData(repository, task, taskData); -// TasksUiPlugin.getTaskList().addTask(task); -// TasksUiUtil.openTask(task); -// -// TaskListView taskListView = TaskListView.getFromActivePerspective(); -// // force refresh since automatic reresh is delayed -// taskListView.getViewer().refresh(); -// taskListView.getViewer().expandAll(); -// taskListView.getViewer().setSelection(new StructuredSelection(task)); -// -// assertFalse(taskListView.getViewer().getSelection().isEmpty()); -// assertEquals(repository, TasksUiUtil.getSelectedRepository(taskListView.getViewer())); -// } + assertFalse(taskListView.getViewer().getSelection().isEmpty()); + assertEquals(repository, TasksUiUtil.getSelectedRepository(taskListView.getViewer())); + } } diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracTaskTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracTaskTest.java deleted file mode 100644 index 3965a3b27..000000000 --- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracTaskTest.java +++ /dev/null @@ -1,75 +0,0 @@ -/******************************************************************************* - * 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.trac.tests; - -import junit.framework.TestCase; - -import org.eclipse.mylyn.internal.trac.core.TracRepositoryConnector; -import org.eclipse.mylyn.internal.trac.core.model.TracPriority; - -/** - * @author Steffen Pingel - */ -public class TracTaskTest extends TestCase { - - public void testIsCompleted() { - assertTrue(TracRepositoryConnector.isCompleted("closed")); - assertFalse(TracRepositoryConnector.isCompleted("Closed")); - assertFalse(TracRepositoryConnector.isCompleted("new")); - assertFalse(TracRepositoryConnector.isCompleted("assigned")); - assertFalse(TracRepositoryConnector.isCompleted("reopened")); - assertFalse(TracRepositoryConnector.isCompleted("foobar")); - assertFalse(TracRepositoryConnector.isCompleted("")); - assertFalse(TracRepositoryConnector.isCompleted(null)); - } - - public void testGetTaskPriority() { - assertEquals("P1", TracRepositoryConnector.getTaskPriority("blocker").toString()); - assertEquals("P2", TracRepositoryConnector.getTaskPriority("critical").toString()); - assertEquals("P3", TracRepositoryConnector.getTaskPriority("major").toString()); - assertEquals("P3", TracRepositoryConnector.getTaskPriority(null).toString()); - assertEquals("P3", TracRepositoryConnector.getTaskPriority("").toString()); - assertEquals("P3", TracRepositoryConnector.getTaskPriority("foo bar").toString()); - assertEquals("P4", TracRepositoryConnector.getTaskPriority("minor").toString()); - assertEquals("P5", TracRepositoryConnector.getTaskPriority("trivial").toString()); - } - - public void testGetTaskPriorityFromTracPriorities() { - TracPriority p1 = new TracPriority("a", 1); - TracPriority p2 = new TracPriority("b", 2); - TracPriority p3 = new TracPriority("c", 3); - TracPriority[] priorities = new TracPriority[] { p1, p2, p3 }; - assertEquals("P1", TracRepositoryConnector.getTaskPriority("a", priorities).toString()); - assertEquals("P3", TracRepositoryConnector.getTaskPriority("b", priorities).toString()); - assertEquals("P5", TracRepositoryConnector.getTaskPriority("c", priorities).toString()); - assertEquals("P3", TracRepositoryConnector.getTaskPriority("foo", priorities).toString()); - assertEquals("P3", TracRepositoryConnector.getTaskPriority(null, priorities).toString()); - - p1 = new TracPriority("a", 10); - priorities = new TracPriority[] { p1 }; - assertEquals("P1", TracRepositoryConnector.getTaskPriority("a", priorities).toString()); - assertEquals("P3", TracRepositoryConnector.getTaskPriority("b", priorities).toString()); - assertEquals("P3", TracRepositoryConnector.getTaskPriority(null, priorities).toString()); - - p1 = new TracPriority("1", 10); - p2 = new TracPriority("2", 20); - p3 = new TracPriority("3", 30); - TracPriority p4 = new TracPriority("4", 40); - TracPriority p5 = new TracPriority("5", 70); - TracPriority p6 = new TracPriority("6", 100); - priorities = new TracPriority[] { p1, p2, p3, p4, p5, p6 }; - assertEquals("P1", TracRepositoryConnector.getTaskPriority("1", priorities).toString()); - assertEquals("P1", TracRepositoryConnector.getTaskPriority("2", priorities).toString()); - assertEquals("P2", TracRepositoryConnector.getTaskPriority("3", priorities).toString()); - assertEquals("P2", TracRepositoryConnector.getTaskPriority("4", priorities).toString()); - assertEquals("P4", TracRepositoryConnector.getTaskPriority("5", priorities).toString()); - assertEquals("P5", TracRepositoryConnector.getTaskPriority("6", priorities).toString()); - } - -} diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracUtilTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracUtilTest.java new file mode 100644 index 000000000..9cf368659 --- /dev/null +++ b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracUtilTest.java @@ -0,0 +1,66 @@ +/******************************************************************************* + * 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.trac.tests; + +import java.util.Arrays; +import java.util.List; + +import junit.framework.TestCase; + +import org.eclipse.mylyn.internal.trac.core.TracCorePlugin; +import org.eclipse.mylyn.internal.trac.core.client.ITracClient; +import org.eclipse.mylyn.internal.trac.core.model.TracSearch; +import org.eclipse.mylyn.internal.trac.core.model.TracSearchFilter; +import org.eclipse.mylyn.internal.trac.core.util.TracUtil; +import org.eclipse.mylyn.tasks.core.IRepositoryQuery; +import org.eclipse.mylyn.tasks.core.TaskRepository; +import org.eclipse.mylyn.tasks.ui.TasksUi; +import org.eclipse.mylyn.trac.tests.support.TracTestConstants; + +/** + * @author Steffen Pingel + */ +public class TracUtilTest extends TestCase { + + private TaskRepository taskRepository; + + @Override + protected void setUp() throws Exception { + taskRepository = new TaskRepository(TracCorePlugin.CONNECTOR_KIND, TracTestConstants.TEST_TRAC_010_URL); + } + + public void testToTracSearch() { + String queryParameter = "&order=priority&status=new&status=assigned&status=reopened&milestone=M1&owner=%7E%C3%A4%C3%B6%C3%BC"; + IRepositoryQuery query = TasksUi.getRepositoryModel().createRepositoryQuery(taskRepository); + query.setUrl(taskRepository.getRepositoryUrl() + ITracClient.QUERY_URL + queryParameter); + + TracSearch search = TracUtil.toTracSearch(query); + assertNotNull(search); + assertEquals(queryParameter, search.toUrl()); + } + + public void testToTracSearchFilterList() { + String parameterUrl = "&status=new&status=assigned&status=reopened&milestone=0.1"; + String queryUrl = taskRepository.getRepositoryUrl() + ITracClient.QUERY_URL + parameterUrl; + IRepositoryQuery query = TasksUi.getRepositoryModel().createRepositoryQuery(taskRepository); + query.setUrl(queryUrl); + + TracSearch filterList = TracUtil.toTracSearch(query); + assertEquals(parameterUrl, filterList.toUrl()); + assertEquals("&status=new|assigned|reopened&milestone=0.1", filterList.toQuery()); + + List<TracSearchFilter> list = filterList.getFilters(); + TracSearchFilter filter = list.get(0); + assertEquals("status", filter.getFieldName()); + assertEquals(Arrays.asList("new", "assigned", "reopened"), filter.getValues()); + filter = list.get(1); + assertEquals("milestone", filter.getFieldName()); + assertEquals(Arrays.asList("0.1"), filter.getValues()); + } +} diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/client/TracTicketTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/client/TracTicketTest.java index 5995c2032..506ecec93 100644 --- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/client/TracTicketTest.java +++ b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/client/TracTicketTest.java @@ -17,7 +17,7 @@ import junit.framework.TestCase; import org.eclipse.mylyn.internal.trac.core.client.InvalidTicketException; import org.eclipse.mylyn.internal.trac.core.model.TracTicket; import org.eclipse.mylyn.internal.trac.core.model.TracTicket.Key; -import org.eclipse.mylyn.internal.trac.core.util.TracUtils; +import org.eclipse.mylyn.internal.trac.core.util.TracUtil; /** * @author Steffen Pingel @@ -53,13 +53,13 @@ public class TracTicketTest extends TestCase { public void testSetCreated() throws InvalidTicketException { TracTicket ticket = new TracTicket(1); - ticket.setCreated(TracUtils.parseDate(0)); + ticket.setCreated(TracUtil.parseDate(0)); assertEquals(TimeZone.getTimeZone("GMT").getOffset(0) * 1000, ticket.getCreated().getTime()); Date date = new Date(); Calendar utc = Calendar.getInstance(TimeZone.getTimeZone("UTC")); utc.setTime(date); - ticket.setCreated(TracUtils.parseDate((int) (utc.getTimeInMillis() / 1000))); + ticket.setCreated(TracUtil.parseDate((int) (utc.getTimeInMillis() / 1000))); assertEquals(date.getTime() / 1000, ticket.getCreated().getTime() / 1000); } diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/client/TracXmlRpcClientTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/client/TracXmlRpcClientTest.java index 4350e29a8..f4d326623 100644 --- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/client/TracXmlRpcClientTest.java +++ b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/client/TracXmlRpcClientTest.java @@ -155,7 +155,7 @@ public class TracXmlRpcClientTest extends AbstractTracClientRepositoryTest { assertEquals("TestGetPage", page.getPageInfo().getPageName()); assertEquals("tests@mylyn.eclipse.org", page.getPageInfo().getAuthor()); assertEquals(2, page.getPageInfo().getVersion()); - // XXX: The Date returned from Wiki API seems to have a problem with the Time Zone + // XXX The Date returned from Wiki API seems to have a problem with the Time Zone //String date = "Sat Nov 11 18:10:56 EST 2006"; //assertEquals(date, page.getPageVersion().getLastModified().toString()); assertEquals("Version 2", page.getContent()); @@ -334,6 +334,6 @@ public class TracXmlRpcClientTest extends AbstractTracClientRepositoryTest { } private void putWikiPage() throws Exception { - // TODO: testing wiki.putPage() + // TODO testing wiki.putPage() } } diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/client/TracXmlRpcTest.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/client/TracXmlRpcTest.java index be26f61ef..9db518448 100644 --- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/client/TracXmlRpcTest.java +++ b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/client/TracXmlRpcTest.java @@ -30,8 +30,8 @@ import org.eclipse.mylyn.internal.trac.core.util.TracHttpClientTransportFactory; import org.eclipse.mylyn.trac.tests.support.TracTestConstants; /** - * Test cases for <a href="http://trac-hacks.org/wiki/XmlRpcPlugin">Trac XML-RPC Plugin</a> API. Revision 1188 or - * higher is required. + * Test cases for <a href="http://trac-hacks.org/wiki/XmlRpcPlugin">Trac XML-RPC Plugin</a> (revision 1188 or higher is + * required). * * <p> * This class does not depend on any Mylar (connector) classes except for TracHttpClientTransportFactory which is needed diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/support/TracTestUtil.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/support/TracTestUtil.java index 653374981..3ad404506 100644 --- a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/support/TracTestUtil.java +++ b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/support/TracTestUtil.java @@ -8,9 +8,29 @@ package org.eclipse.mylyn.trac.tests.support; +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.mylyn.commons.net.AuthenticationCredentials; +import org.eclipse.mylyn.commons.net.AuthenticationType; +import org.eclipse.mylyn.context.tests.support.TestUtil; +import org.eclipse.mylyn.context.tests.support.TestUtil.Credentials; +import org.eclipse.mylyn.context.tests.support.TestUtil.PrivilegeLevel; +import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryManager; +import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; +import org.eclipse.mylyn.internal.trac.core.TracCorePlugin; import org.eclipse.mylyn.internal.trac.core.client.ITracClient; +import org.eclipse.mylyn.internal.trac.core.client.ITracClient.Version; import org.eclipse.mylyn.internal.trac.core.model.TracTicket; import org.eclipse.mylyn.internal.trac.core.model.TracTicket.Key; +import org.eclipse.mylyn.tasks.core.AbstractRepositoryConnector; +import org.eclipse.mylyn.tasks.core.ITask; +import org.eclipse.mylyn.tasks.core.ITaskAttachment; +import org.eclipse.mylyn.tasks.core.TaskRepository; +import org.eclipse.mylyn.tasks.core.data.TaskAttribute; +import org.eclipse.mylyn.tasks.core.data.TaskData; +import org.eclipse.mylyn.tasks.ui.TasksUi; /** * @author Steffen Pingel @@ -25,4 +45,46 @@ public class TracTestUtil { return client.getTicket(id, null); } + public static ITask createTask(TaskRepository taskRepository, String taskId) throws Exception { + AbstractRepositoryConnector connector = TasksUi.getRepositoryConnector(TracCorePlugin.CONNECTOR_KIND); + TaskData taskData = connector.getTaskData(taskRepository, taskId, null); + ITask task = TasksUi.getRepositoryModel().createTask(taskRepository, taskData.getTaskId()); + TasksUiPlugin.getTaskDataManager().putUpdatedTaskData(task, taskData, true); + return task; + } + + public static TaskRepository init(String repositoryUrl, Version version) { + TracCorePlugin.getDefault().getConnector().getClientManager().writeCache(); + TaskRepositoryManager manager = TasksUiPlugin.getRepositoryManager(); + manager.clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath()); + + Credentials credentials = TestUtil.readCredentials(PrivilegeLevel.USER); + TaskRepository repository = new TaskRepository(TracCorePlugin.CONNECTOR_KIND, repositoryUrl); + repository.setCredentials(AuthenticationType.REPOSITORY, new AuthenticationCredentials(credentials.username, + credentials.password), false); + repository.setTimeZoneId(ITracClient.TIME_ZONE); + repository.setCharacterEncoding(ITracClient.CHARSET); + repository.setVersion(version.name()); + + manager.addRepository(repository); + TracCorePlugin.getDefault().getConnector().getClientManager().readCache(); + + return repository; + } + + public static List<ITaskAttachment> getTaskAttachments(ITask task) throws CoreException { + TaskData taskData = TasksUi.getTaskDataManager().getTaskData(task); + List<ITaskAttachment> attachments = new ArrayList<ITaskAttachment>(); + List<TaskAttribute> attributes = taskData.getAttributeMapper().getAttributesByType(taskData, + TaskAttribute.TYPE_ATTACHMENT); + if (attributes != null) { + for (TaskAttribute taskAttribute : attributes) { + ITaskAttachment taskAttachment = TasksUiPlugin.getRepositoryModel().createTaskAttachment(taskAttribute); + taskData.getAttributeMapper().updateTaskAttachment(taskAttachment, taskAttribute); + attachments.add(taskAttachment); + } + } + return attachments; + } + } |