Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracTaskDataHandlerTest.java')
-rw-r--r--org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracTaskDataHandlerTest.java142
1 files changed, 142 insertions, 0 deletions
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
new file mode 100644
index 000000000..783d8f989
--- /dev/null
+++ b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/TracTaskDataHandlerTest.java
@@ -0,0 +1,142 @@
+/*******************************************************************************
+ * Copyright (c) 2006 - 2006 Mylar eclipse.org project and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Mylar project committers - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylar.trac.tests;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.mylar.context.tests.support.MylarTestUtils;
+import org.eclipse.mylar.context.tests.support.MylarTestUtils.Credentials;
+import org.eclipse.mylar.context.tests.support.MylarTestUtils.PrivilegeLevel;
+import org.eclipse.mylar.internal.trac.core.ITracClient;
+import org.eclipse.mylar.internal.trac.core.TracCorePlugin;
+import org.eclipse.mylar.internal.trac.core.TracRepositoryConnector;
+import org.eclipse.mylar.internal.trac.core.TracTask;
+import org.eclipse.mylar.internal.trac.core.ITracClient.Version;
+import org.eclipse.mylar.internal.trac.core.model.TracTicket;
+import org.eclipse.mylar.internal.trac.core.model.TracTicket.Key;
+import org.eclipse.mylar.tasks.core.AbstractRepositoryTask;
+import org.eclipse.mylar.tasks.core.TaskRepository;
+import org.eclipse.mylar.tasks.core.TaskRepositoryManager;
+import org.eclipse.mylar.tasks.ui.TasksUiPlugin;
+import org.eclipse.mylar.trac.tests.support.TestFixture;
+import org.eclipse.mylar.trac.tests.support.XmlRpcServer.TestData;
+
+/**
+ * @author Steffen Pingel
+ */
+public class TracTaskDataHandlerTest extends TestCase {
+
+ private TracRepositoryConnector connector;
+
+ private TaskRepository repository;
+
+ private TaskRepositoryManager manager;
+
+ private TestData data;
+
+ public TracTaskDataHandlerTest() {
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ data = TestFixture.init010();
+
+ manager = TasksUiPlugin.getRepositoryManager();
+ manager.clearRepositories(TasksUiPlugin.getDefault().getRepositoriesFilePath());
+
+ connector = (TracRepositoryConnector) manager.getRepositoryConnector(TracCorePlugin.REPOSITORY_KIND);
+ TasksUiPlugin.getSynchronizationManager().setForceSyncExec(true);
+ }
+
+ protected void init(String url, Version version) {
+ Credentials credentials = MylarTestUtils.readCredentials(PrivilegeLevel.USER);
+
+ repository = new TaskRepository(TracCorePlugin.REPOSITORY_KIND, url);
+ repository.setAuthenticationCredentials(credentials.username, credentials.password);
+ repository.setTimeZoneId(ITracClient.TIME_ZONE);
+ repository.setCharacterEncoding(ITracClient.CHARSET);
+ repository.setVersion(version.name());
+
+ manager.addRepository(repository, TasksUiPlugin.getDefault().getRepositoriesFilePath());
+ }
+
+ public void testGetChangedSinceLastSyncWeb096() throws Exception {
+ init(Constants.TEST_TRAC_096_URL, Version.TRAC_0_9);
+ TracTask task = (TracTask) connector.createTaskFromExistingKey(repository, data.offlineHandlerTicketId + "");
+
+ Set<AbstractRepositoryTask> tasks = new HashSet<AbstractRepositoryTask>();
+ tasks.add(task);
+
+ assertEquals(null, repository.getSyncTimeStamp());
+ Set<AbstractRepositoryTask> result = connector.getChangedSinceLastSync(repository, tasks);
+ assertEquals(tasks, result);
+ assertEquals(null, repository.getSyncTimeStamp());
+
+ int time = (int)(System.currentTimeMillis() / 1000) + 1;
+ repository.setSyncTimeStamp(time + "");
+ assertEquals(tasks, result);
+ }
+
+ public void testGetChangedSinceLastSyncXmlRpc010() throws Exception {
+ init(Constants.TEST_TRAC_010_URL, Version.XML_RPC);
+ TracTask task = (TracTask) connector.createTaskFromExistingKey(repository, data.offlineHandlerTicketId + "");
+ TasksUiPlugin.getSynchronizationManager().synchronize(connector, task, true, null);
+ int lastModified = Integer.parseInt(task.getTaskData().getLastModified());
+
+ Set<AbstractRepositoryTask> tasks = new HashSet<AbstractRepositoryTask>();
+ tasks.add(task);
+
+ assertEquals(null, repository.getSyncTimeStamp());
+ Set<AbstractRepositoryTask> result = connector.getChangedSinceLastSync(repository, tasks);
+ assertEquals(tasks, result);
+
+ // always returns the ticket because time comparison mode is >=
+ repository.setSyncTimeStamp(lastModified + "");
+ result = connector.getChangedSinceLastSync(repository, tasks);
+ assertEquals(tasks, result);
+
+ repository.setSyncTimeStamp((lastModified + 1) + "");
+ result = connector.getChangedSinceLastSync(repository, tasks);
+ assertTrue(result.isEmpty());
+
+ // change ticket making sure it gets a new change time
+ Thread.sleep(1000);
+ ITracClient client = connector.getClientManager().getRepository(repository);
+ TracTicket ticket = client.getTicket(data.offlineHandlerTicketId);
+ if (ticket.getValue(Key.DESCRIPTION).equals(lastModified + "")) {
+ ticket.putBuiltinValue(Key.DESCRIPTION, lastModified + "x");
+ } else {
+ ticket.putBuiltinValue(Key.DESCRIPTION, lastModified + "");
+ }
+ client.updateTicket(ticket, "comment");
+
+ repository.setSyncTimeStamp((lastModified + 1) + "");
+ result = connector.getChangedSinceLastSync(repository, tasks);
+ assertEquals(tasks, result);
+ }
+
+ public void testNonNumericTaskId() {
+ try {
+ connector.getTaskDataHandler().getTaskData(repository, "abc");
+ fail("Expected CoreException");
+ } catch (CoreException e) {
+ }
+ }
+
+
+}

Back to the top