Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Sawicki2011-05-18 00:03:45 +0000
committerKevin Sawicki2011-05-18 00:03:45 +0000
commit7f9ecb456b0536a70b1b872be8ba97c0c7607c77 (patch)
tree6045ea42ef64100e80b458ef162a437ca445882b
parent4debccab7b75998c47f3e367412dded667ce3f47 (diff)
downloadegit-github-7f9ecb456b0536a70b1b872be8ba97c0c7607c77.tar.gz
egit-github-7f9ecb456b0536a70b1b872be8ba97c0c7607c77.tar.xz
egit-github-7f9ecb456b0536a70b1b872be8ba97c0c7607c77.zip
Add support for creating and getting a milestone.
Change-Id: I5415507e82fbe00f62a2fc7831122a94e4571f86 Signed-off-by: Kevin Sawicki <kevin@github.com>
-rw-r--r--org.eclipse.egit.github.core.tests/src/org/eclipse/egit/github/core/tests/live/LiveTest.java11
-rw-r--r--org.eclipse.egit.github.core.tests/src/org/eclipse/egit/github/core/tests/live/LiveTests.java4
-rw-r--r--org.eclipse.egit.github.core.tests/src/org/eclipse/egit/github/core/tests/live/MilestoneTest.java78
-rw-r--r--org.eclipse.egit.github.core/src/org/eclipse/egit/github/core/Milestone.java28
-rw-r--r--org.eclipse.egit.github.core/src/org/eclipse/egit/github/core/service/MilestoneService.java51
5 files changed, 168 insertions, 4 deletions
diff --git a/org.eclipse.egit.github.core.tests/src/org/eclipse/egit/github/core/tests/live/LiveTest.java b/org.eclipse.egit.github.core.tests/src/org/eclipse/egit/github/core/tests/live/LiveTest.java
index fd7cc666..2e300f42 100644
--- a/org.eclipse.egit.github.core.tests/src/org/eclipse/egit/github/core/tests/live/LiveTest.java
+++ b/org.eclipse.egit.github.core.tests/src/org/eclipse/egit/github/core/tests/live/LiveTest.java
@@ -16,6 +16,7 @@ import java.net.URL;
import junit.framework.TestCase;
import org.apache.http.HttpHost;
+import org.eclipse.egit.github.core.Repository;
import org.eclipse.egit.github.core.client.GitHubClient;
/**
@@ -29,6 +30,11 @@ public abstract class LiveTest extends TestCase {
protected GitHubClient client;
/**
+ * Writable repository
+ */
+ protected String writableRepo;
+
+ /**
* Configure client
*
* @param client
@@ -37,6 +43,7 @@ public abstract class LiveTest extends TestCase {
protected GitHubClient configure(GitHubClient client) {
String user = System.getProperty("github.test.user");
String password = System.getProperty("github.test.password");
+ writableRepo = System.getProperty("github.test.repository");
client.setCredentials(user, password);
return client;
}
@@ -52,8 +59,8 @@ public abstract class LiveTest extends TestCase {
GitHubClient client = null;
if (url != null) {
URL parsed = new URL(url);
- HttpHost httpHost = new HttpHost(parsed.getHost(), parsed.getPort(),
- parsed.getProtocol());
+ HttpHost httpHost = new HttpHost(parsed.getHost(),
+ parsed.getPort(), parsed.getProtocol());
client = new GitHubClient(httpHost);
} else
client = new GitHubClient();
diff --git a/org.eclipse.egit.github.core.tests/src/org/eclipse/egit/github/core/tests/live/LiveTests.java b/org.eclipse.egit.github.core.tests/src/org/eclipse/egit/github/core/tests/live/LiveTests.java
index 7f753277..2adfeec6 100644
--- a/org.eclipse.egit.github.core.tests/src/org/eclipse/egit/github/core/tests/live/LiveTests.java
+++ b/org.eclipse.egit.github.core.tests/src/org/eclipse/egit/github/core/tests/live/LiveTests.java
@@ -18,8 +18,8 @@ import org.junit.runners.Suite.SuiteClasses;
* All tests against a live GitHub instance.
*/
@RunWith(Suite.class)
-@SuiteClasses({ GistTest.class, IssueTest.class, PullRequestTest.class,
- RepositoryTest.class })
+@SuiteClasses({ GistTest.class, IssueTest.class, MilestoneTest.class,
+ PullRequestTest.class, RepositoryTest.class })
public class LiveTests {
}
diff --git a/org.eclipse.egit.github.core.tests/src/org/eclipse/egit/github/core/tests/live/MilestoneTest.java b/org.eclipse.egit.github.core.tests/src/org/eclipse/egit/github/core/tests/live/MilestoneTest.java
new file mode 100644
index 00000000..38561be6
--- /dev/null
+++ b/org.eclipse.egit.github.core.tests/src/org/eclipse/egit/github/core/tests/live/MilestoneTest.java
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2011 GitHub Inc.
+ * 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:
+ * Kevin Sawicki (GitHub Inc.) - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.egit.github.core.tests.live;
+
+import java.util.Date;
+import java.util.List;
+
+import org.eclipse.egit.github.core.Milestone;
+import org.eclipse.egit.github.core.service.MilestoneService;
+
+/**
+ * Unit tests of {@link MilestoneService}
+ */
+public class MilestoneTest extends LiveTest {
+
+ /**
+ * Test creating a milestone
+ *
+ * @throws Exception
+ */
+ public void testCreate() throws Exception {
+ Milestone m = new Milestone();
+ m.setDescription("desc " + System.currentTimeMillis());
+ m.setTitle("Title " + System.currentTimeMillis());
+ m.setDueOn(new Date((System.currentTimeMillis() / 1000) * 1000));
+ MilestoneService service = new MilestoneService(client);
+ Milestone created = service.createMilestone(client.getUser(),
+ writableRepo, m);
+ assertNotNull(created);
+ assertEquals(m.getDescription(), created.getDescription());
+ assertEquals(m.getTitle(), created.getTitle());
+ assertEquals(m.getDueOn().getTime(), created.getDueOn().getTime());
+ List<Milestone> milestones = service.getMilestones(client.getUser(),
+ writableRepo, m.getState());
+ Milestone fetched = null;
+ assertNotNull(milestones);
+ for (Milestone milestone : milestones)
+ if (created.getNumber() == milestone.getNumber()) {
+ fetched = milestone;
+ break;
+ }
+ assertNotNull(fetched);
+ assertEquals(created.getClosedIssues(), fetched.getClosedIssues());
+ assertEquals(created.getDescription(), fetched.getDescription());
+ assertEquals(created.getNumber(), fetched.getNumber());
+ assertEquals(created.getOpenIssues(), fetched.getOpenIssues());
+ assertEquals(created.getState(), fetched.getState());
+ assertEquals(created.getTitle(), fetched.getTitle());
+ assertEquals(created.getUrl(), fetched.getUrl());
+ assertEquals(created.getCreatedAt(), fetched.getCreatedAt());
+ assertEquals(created.getDueOn(), fetched.getDueOn());
+ assertEquals(created.getCreator().getLogin(), fetched.getCreator()
+ .getLogin());
+
+ fetched = service.getMilestone(client.getUser(), writableRepo,
+ Integer.toString(created.getNumber()));
+ assertNotNull(fetched);
+ assertEquals(created.getClosedIssues(), fetched.getClosedIssues());
+ assertEquals(created.getDescription(), fetched.getDescription());
+ assertEquals(created.getNumber(), fetched.getNumber());
+ assertEquals(created.getOpenIssues(), fetched.getOpenIssues());
+ assertEquals(created.getState(), fetched.getState());
+ assertEquals(created.getTitle(), fetched.getTitle());
+ assertEquals(created.getUrl(), fetched.getUrl());
+ assertEquals(created.getCreatedAt(), fetched.getCreatedAt());
+ assertEquals(created.getDueOn(), fetched.getDueOn());
+ assertEquals(created.getCreator().getLogin(), fetched.getCreator()
+ .getLogin());
+ }
+}
diff --git a/org.eclipse.egit.github.core/src/org/eclipse/egit/github/core/Milestone.java b/org.eclipse.egit.github.core/src/org/eclipse/egit/github/core/Milestone.java
index da243dbd..d3d23790 100644
--- a/org.eclipse.egit.github.core/src/org/eclipse/egit/github/core/Milestone.java
+++ b/org.eclipse.egit.github.core/src/org/eclipse/egit/github/core/Milestone.java
@@ -55,6 +55,13 @@ public class Milestone {
}
/**
+ * @param dueOn
+ */
+ public void setDueOn(Date dueOn) {
+ this.dueOn = dueOn;
+ }
+
+ /**
* @return closedIssues
*/
public int getClosedIssues() {
@@ -92,6 +99,13 @@ public class Milestone {
}
/**
+ * @param description
+ */
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ /**
* @return state
*/
public String getState() {
@@ -99,6 +113,13 @@ public class Milestone {
}
/**
+ * @param state
+ */
+ public void setState(String state) {
+ this.state = state;
+ }
+
+ /**
* @return title
*/
public String getTitle() {
@@ -106,6 +127,13 @@ public class Milestone {
}
/**
+ * @param title
+ */
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ /**
* @return url
*/
public String getUrl() {
diff --git a/org.eclipse.egit.github.core/src/org/eclipse/egit/github/core/service/MilestoneService.java b/org.eclipse.egit.github.core/src/org/eclipse/egit/github/core/service/MilestoneService.java
index 1d239c0e..8bb3d416 100644
--- a/org.eclipse.egit.github.core/src/org/eclipse/egit/github/core/service/MilestoneService.java
+++ b/org.eclipse.egit.github.core/src/org/eclipse/egit/github/core/service/MilestoneService.java
@@ -20,6 +20,7 @@ import org.eclipse.egit.github.core.Assert;
import org.eclipse.egit.github.core.ListResourceCollector;
import org.eclipse.egit.github.core.Milestone;
import org.eclipse.egit.github.core.client.GitHubClient;
+import org.eclipse.egit.github.core.client.GitHubRequest;
import org.eclipse.egit.github.core.client.IGitHubConstants;
import org.eclipse.egit.github.core.client.PagedRequest;
@@ -65,4 +66,54 @@ public class MilestoneService extends GitHubService {
getAll(request);
return collector.getResources();
}
+
+ /**
+ * Create a milestone
+ *
+ * @param user
+ * must be non-null
+ * @param repository
+ * must be non-null
+ * @param milestone
+ * must be non-null
+ * @return created milestone
+ * @throws IOException
+ */
+ public Milestone createMilestone(String user, String repository,
+ Milestone milestone) throws IOException {
+ Assert.notNull("User cannot be null", user); //$NON-NLS-1$
+ Assert.notNull("Repository cannot be null", repository); //$NON-NLS-1$
+ Assert.notNull("Milestone cannot be null", milestone); //$NON-NLS-1$
+ StringBuilder uri = new StringBuilder(IGitHubConstants.SEGMENT_REPOS);
+ uri.append('/').append(user).append('/').append(repository);
+ uri.append(IGitHubConstants.SEGMENT_MILESTONES);
+ return client.post(uri.toString(), milestone, Milestone.class);
+ }
+
+ /**
+ * Get a milestone
+ *
+ * @param user
+ * must be non-null
+ * @param repository
+ * must be non-null
+ * @param number
+ * must be non-null
+ * @return created milestone
+ * @throws IOException
+ */
+ public Milestone getMilestone(String user, String repository, String number)
+ throws IOException {
+ Assert.notNull("User cannot be null", user); //$NON-NLS-1$
+ Assert.notNull("Repository cannot be null", repository); //$NON-NLS-1$
+ Assert.notNull("Milestone cannot be null", number); //$NON-NLS-1$
+ StringBuilder uri = new StringBuilder(IGitHubConstants.SEGMENT_REPOS);
+ uri.append('/').append(user).append('/').append(repository);
+ uri.append(IGitHubConstants.SEGMENT_MILESTONES).append('/')
+ .append(number);
+ GitHubRequest request = new GitHubRequest().setUri(uri);
+ request.setType(Milestone.class);
+ return (Milestone) client.get(request).getBody();
+ }
+
}

Back to the top