diff options
Diffstat (limited to 'org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/support/TracHarness.java')
-rw-r--r-- | org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/support/TracHarness.java | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/support/TracHarness.java b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/support/TracHarness.java new file mode 100644 index 000000000..93a9eb1c0 --- /dev/null +++ b/org.eclipse.mylyn.trac.tests/src/org/eclipse/mylyn/trac/tests/support/TracHarness.java @@ -0,0 +1,122 @@ +/******************************************************************************* + * Copyright (c) 2013 Steffen Pingel 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: + * Steffen Pingel - initial API and implementation + *******************************************************************************/ + +package org.eclipse.mylyn.trac.tests.support; + +import java.io.ByteArrayInputStream; + +import org.eclipse.mylyn.commons.sdk.util.CommonTestUtil.PrivilegeLevel; +import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; +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.internal.trac.core.client.InvalidTicketException; +import org.eclipse.mylyn.internal.trac.core.client.TracException; +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.ITask; +import org.eclipse.mylyn.tasks.core.TaskRepository; +import org.eclipse.mylyn.tasks.core.data.TaskData; +import org.eclipse.mylyn.tasks.ui.TasksUi; + +public class TracHarness { + + private final TracFixture fixture; + + private ITracClient priviledgedClient; + + private TaskRepository repository; + + public TracHarness(TracFixture fixture) { + this.fixture = fixture; + } + + public TracFixture getFixture() { + return fixture; + } + + private ITracClient priviledgedClient() throws Exception { + if (priviledgedClient == null) { + priviledgedClient = fixture.connectXmlRpc(PrivilegeLevel.USER); + } + return priviledgedClient; + } + + public TracTicket createTicket(String summary) throws Exception { + TracTicket ticket = newTicket(summary); + return createTicket(ticket); + } + + public TracTicket createTicket(TracTicket ticket) throws TracException, Exception { + int id = priviledgedClient().createTicket(ticket, null); + return priviledgedClient().getTicket(id, null); + } + + public TracTicket newTicket(String summary) throws InvalidTicketException { + TracTicket ticket = new TracTicket(); + ticket.putBuiltinValue(Key.SUMMARY, summary); + ticket.putBuiltinValue(Key.DESCRIPTION, ""); + return ticket; + } + + public TracTicket createTicketWithMilestone(String summary, String milestone) throws Exception { + TracTicket ticket = newTicket(summary); + ticket.putBuiltinValue(Key.MILESTONE, milestone); + return createTicket(ticket); + } + + public ITask getTask(String taskId) throws Exception { + TaskRepository repository = repository(); + TaskData taskData = fixture.connector().getTaskData(repository, taskId, null); + ITask task = TasksUi.getRepositoryModel().createTask(repository, taskData.getTaskId()); + TasksUiPlugin.getTaskDataManager().putUpdatedTaskData(task, taskData, true); + return task; + } + + public void dispose() { + + } + + public ITask getTask(TracTicket ticket) throws Exception { + return getTask(Integer.toString(ticket.getId())); + } + + public ITask createTask(String summary) throws Exception { + TracTicket ticket = createTicket(summary); + return getTask(ticket); + } + + public TaskData createTaskData(String summary) throws Exception { + TracTicket ticket = createTicket(summary); + return fixture.connector().getTaskData(repository(), Integer.toString(ticket.getId()), null); + } + + public TaskRepository repository() { + if (repository == null) { + repository = fixture.singleRepository(); + } + return repository; + } + + public TracRepositoryConnector connector() { + return fixture.connector(); + } + + public void attachFile(int ticketId, String name, String content) throws Exception { + priviledgedClient().putAttachmentData(ticketId, name, "", new ByteArrayInputStream(content.getBytes("UTF-8")), + null, true); + } + + public boolean isXmlRpc() { + return Version.XML_RPC.name().equals(repository().getVersion()); + } + +} |