diff options
author | Kevin Sawicki | 2011-05-18 00:03:45 +0000 |
---|---|---|
committer | Kevin Sawicki | 2011-05-18 00:03:45 +0000 |
commit | 7f9ecb456b0536a70b1b872be8ba97c0c7607c77 (patch) | |
tree | 6045ea42ef64100e80b458ef162a437ca445882b | |
parent | 4debccab7b75998c47f3e367412dded667ce3f47 (diff) | |
download | egit-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>
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(); + } + } |