Commit 53aefeb6 authored by Greg Messner's avatar Greg Messner
Browse files

Fixed milestones type in ReleaseParams (#489).

parent c0637dd7
...@@ -127,7 +127,7 @@ public class ReleasesApi extends AbstractApi { ...@@ -127,7 +127,7 @@ public class ReleasesApi extends AbstractApi {
} }
Response response = put(Response.Status.OK, params, Response response = put(Response.Status.OK, params,
"projects", getProjectIdOrPath(projectIdOrPath), "releases", tagName); "projects", getProjectIdOrPath(projectIdOrPath), "releases", urlEncode(tagName));
return (response.readEntity(Release.class)); return (response.readEntity(Release.class));
} }
...@@ -141,6 +141,6 @@ public class ReleasesApi extends AbstractApi { ...@@ -141,6 +141,6 @@ public class ReleasesApi extends AbstractApi {
* @throws GitLabApiException if any exception occurs * @throws GitLabApiException if any exception occurs
*/ */
public void deleteRelease(Object projectIdOrPath, String tagName) throws GitLabApiException { public void deleteRelease(Object projectIdOrPath, String tagName) throws GitLabApiException {
delete(Response.Status.OK, null, "projects", getProjectIdOrPath(projectIdOrPath), "releases", tagName); delete(Response.Status.OK, null, "projects", getProjectIdOrPath(projectIdOrPath), "releases", urlEncode(tagName));
} }
} }
...@@ -11,7 +11,7 @@ public class ReleaseParams { ...@@ -11,7 +11,7 @@ public class ReleaseParams {
private String tagName; private String tagName;
private String description; private String description;
private String ref; private String ref;
private List<Milestone> milestones; private List<String> milestones;
private Assets assets; private Assets assets;
private Date releasedAt; private Date releasedAt;
...@@ -54,15 +54,15 @@ public class ReleaseParams { ...@@ -54,15 +54,15 @@ public class ReleaseParams {
return (this); return (this);
} }
public List<Milestone> getMilestones() { public List<String> getMilestones() {
return milestones; return milestones;
} }
public void setMilestones(List<Milestone> milestones) { public void setMilestones(List<String> milestones) {
this.milestones = milestones; this.milestones = milestones;
} }
public ReleaseParams withMilestones(List<Milestone> milestones) { public ReleaseParams withMilestones(List<String> milestones) {
this.milestones = milestones; this.milestones = milestones;
return (this); return (this);
} }
......
...@@ -6,9 +6,12 @@ import static org.junit.Assert.assertNotNull; ...@@ -6,9 +6,12 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import static org.junit.Assume.assumeTrue; import static org.junit.Assume.assumeTrue;
import java.util.Collections;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import org.gitlab4j.api.models.Milestone;
import org.gitlab4j.api.models.Project; import org.gitlab4j.api.models.Project;
import org.gitlab4j.api.models.Release; import org.gitlab4j.api.models.Release;
import org.gitlab4j.api.models.ReleaseParams; import org.gitlab4j.api.models.ReleaseParams;
...@@ -21,10 +24,11 @@ import org.junit.experimental.categories.Category; ...@@ -21,10 +24,11 @@ import org.junit.experimental.categories.Category;
@Category(IntegrationTest.class) @Category(IntegrationTest.class)
public class TestReleasesApi extends AbstractIntegrationTest { public class TestReleasesApi extends AbstractIntegrationTest {
private static final String TEST_TAG_NAME = "test-release-tag"; private static final String TEST_TAG_NAME = "test-release/1.0.0";
private static final String TEST_RELEASE_NAME = "Test Release"; private static final String TEST_RELEASE_NAME = "Test Release";
private static final String TEST_RELEASE_DESCRIPTION = "Test releases API release."; private static final String TEST_RELEASE_DESCRIPTION = "Test releases API release.";
private static final String TEST_UPDATED_RELEASE_DESCRIPTION = "UPDATED: Test releases API release."; private static final String TEST_UPDATED_RELEASE_DESCRIPTION = "UPDATED: Test releases API release.";
private static final String TEST_MILESTONE_TITLE = "Test Release 1.0.0 Milestone";
private static GitLabApi gitLabApi; private static GitLabApi gitLabApi;
private static Project testProject; private static Project testProject;
...@@ -45,7 +49,7 @@ public class TestReleasesApi extends AbstractIntegrationTest { ...@@ -45,7 +49,7 @@ public class TestReleasesApi extends AbstractIntegrationTest {
@AfterClass @AfterClass
public static void tearDown() { public static void tearDown() {
deleteTestResources(); deleteTestResources();
} }
private static final void deleteTestResources() { private static final void deleteTestResources() {
...@@ -58,6 +62,15 @@ public class TestReleasesApi extends AbstractIntegrationTest { ...@@ -58,6 +62,15 @@ public class TestReleasesApi extends AbstractIntegrationTest {
try { try {
gitLabApi.getTagsApi().deleteTag(testProject, TEST_TAG_NAME); gitLabApi.getTagsApi().deleteTag(testProject, TEST_TAG_NAME);
} catch (Exception ignore) {} } catch (Exception ignore) {}
try {
List<Milestone> milestones = gitLabApi.getMilestonesApi().getMilestones(testProject);
Optional<Milestone> testMilestone = milestones.stream().
filter(m -> m.getTitle().equals(TEST_MILESTONE_TITLE)).findFirst();
if (testMilestone.isPresent()) {
gitLabApi.getMilestonesApi().deleteMilestone(testProject, testMilestone.get().getId());
}
} catch (Exception ignore) {}
} }
} }
...@@ -69,61 +82,96 @@ public class TestReleasesApi extends AbstractIntegrationTest { ...@@ -69,61 +82,96 @@ public class TestReleasesApi extends AbstractIntegrationTest {
@Test @Test
public void testCreateAndDeleteRelease() throws GitLabApiException { public void testCreateAndDeleteRelease() throws GitLabApiException {
ReleaseParams params = new ReleaseParams() Milestone testMilestone = gitLabApi.getMilestonesApi().createMilestone(testProject, TEST_MILESTONE_TITLE, null, null, null);
.withName(TEST_RELEASE_NAME) assertNotNull(testMilestone);
.withTagName(TEST_TAG_NAME)
.withDescription(TEST_RELEASE_DESCRIPTION)
.withRef("master");
Release testRelease = gitLabApi.getReleasesApi().createRelease(testProject, params);
assertNotNull(testRelease);
assertEquals(TEST_RELEASE_NAME, testRelease.getName());
assertEquals(TEST_TAG_NAME, testRelease.getTagName());
List<Release> releases = gitLabApi.getReleasesApi().getReleases(testProject); try {
assertTrue(releases.stream().map(Release::getTagName).anyMatch(s -> TEST_TAG_NAME.equals(s)));
gitLabApi.getReleasesApi().deleteRelease(testProject, TEST_TAG_NAME); ReleaseParams params = new ReleaseParams()
Optional<Release> release = gitLabApi.getReleasesApi().getOptionalRelease(testProject, TEST_TAG_NAME); .withName(TEST_RELEASE_NAME)
assertFalse(release.isPresent()); .withTagName(TEST_TAG_NAME)
.withDescription(TEST_RELEASE_DESCRIPTION)
.withRef("master")
.withMilestones(Collections.singletonList(TEST_MILESTONE_TITLE));
Release testRelease = gitLabApi.getReleasesApi().createRelease(testProject, params);
assertNotNull(testRelease);
assertEquals(TEST_RELEASE_NAME, testRelease.getName());
assertEquals(TEST_TAG_NAME, testRelease.getTagName());
assertTrue(testRelease.getMilestones().stream().map(Milestone::getId)
.anyMatch(id -> id.equals(testMilestone.getId())));
List<Release> releases = gitLabApi.getReleasesApi().getReleases(testProject);
assertTrue(releases.stream().map(Release::getTagName).anyMatch(s -> TEST_TAG_NAME.equals(s)));
releases = gitLabApi.getReleasesApi().getReleases(testProject); gitLabApi.getReleasesApi().deleteRelease(testProject, TEST_TAG_NAME);
assertFalse(releases.stream().map(Release::getTagName).anyMatch(s -> TEST_TAG_NAME.equals(s))); Optional<Release> release = gitLabApi.getReleasesApi().getOptionalRelease(testProject, TEST_TAG_NAME);
assertFalse(release.isPresent());
releases = gitLabApi.getReleasesApi().getReleases(testProject);
assertFalse(releases.stream().map(Release::getTagName).anyMatch(s -> TEST_TAG_NAME.equals(s)));
} finally {
try {
gitLabApi.getMilestonesApi().deleteMilestone(testProject, testMilestone.getId());
} catch (Exception ignore) {}
}
} }
@Test @Test
public void testCreateAndUpdateRelease() throws GitLabApiException { public void testCreateAndUpdateRelease() throws GitLabApiException {
ReleaseParams params = new ReleaseParams() ReleaseParams params = new ReleaseParams()
.withName(TEST_RELEASE_NAME) .withName(TEST_RELEASE_NAME)
.withTagName(TEST_TAG_NAME) .withTagName(TEST_TAG_NAME)
.withDescription(TEST_RELEASE_DESCRIPTION) .withDescription(TEST_RELEASE_DESCRIPTION)
.withRef("master"); .withRef("master");
Release testRelease = gitLabApi.getReleasesApi().createRelease(testProject, params); Release testRelease = gitLabApi.getReleasesApi().createRelease(testProject, params);
assertNotNull(testRelease); assertNotNull(testRelease);
assertEquals(TEST_RELEASE_NAME, testRelease.getName()); assertEquals(TEST_RELEASE_NAME, testRelease.getName());
assertEquals(TEST_TAG_NAME, testRelease.getTagName()); assertEquals(TEST_TAG_NAME, testRelease.getTagName());
assertTrue(testRelease.getMilestones() == null || testRelease.getMilestones().isEmpty());
Optional<Release> release = gitLabApi.getReleasesApi().getOptionalRelease(testProject, TEST_TAG_NAME); Optional<Release> release = gitLabApi.getReleasesApi().getOptionalRelease(testProject, TEST_TAG_NAME);
assertTrue(release.isPresent()); assertTrue(release.isPresent());
params = new ReleaseParams() Milestone testMilestone = gitLabApi.getMilestonesApi().createMilestone(testProject, TEST_MILESTONE_TITLE, null, null, null);
.withTagName(TEST_TAG_NAME) assertNotNull(testMilestone);
.withDescription(TEST_UPDATED_RELEASE_DESCRIPTION);
testRelease = gitLabApi.getReleasesApi().updateRelease(testProject, params); try {
assertNotNull(testRelease);
assertEquals(TEST_RELEASE_NAME, testRelease.getName()); Date releasedAt = new Date();
assertEquals(TEST_TAG_NAME, testRelease.getTagName()); params = new ReleaseParams()
assertEquals(TEST_UPDATED_RELEASE_DESCRIPTION, testRelease.getDescription()); .withTagName(TEST_TAG_NAME)
.withDescription(TEST_UPDATED_RELEASE_DESCRIPTION)
release = gitLabApi.getReleasesApi().getOptionalRelease(testProject, TEST_TAG_NAME); .withReleasedAt(releasedAt)
assertTrue(release.isPresent()); .withMilestones(Collections.singletonList(TEST_MILESTONE_TITLE));
testRelease = release.get(); testRelease = gitLabApi.getReleasesApi().updateRelease(testProject, params);
assertEquals(TEST_RELEASE_NAME, testRelease.getName()); assertNotNull(testRelease);
assertEquals(TEST_TAG_NAME, testRelease.getTagName()); assertEquals(TEST_RELEASE_NAME, testRelease.getName());
assertEquals(TEST_UPDATED_RELEASE_DESCRIPTION, testRelease.getDescription()); assertEquals(TEST_TAG_NAME, testRelease.getTagName());
assertEquals(TEST_UPDATED_RELEASE_DESCRIPTION, testRelease.getDescription());
gitLabApi.getReleasesApi().deleteRelease(testProject, TEST_TAG_NAME); assertEquals(releasedAt, testRelease.getReleasedAt());
release = gitLabApi.getReleasesApi().getOptionalRelease(testProject, TEST_TAG_NAME); assertTrue(testRelease.getMilestones().stream().map(Milestone::getId)
assertFalse(release.isPresent()); .anyMatch(id -> id.equals(testMilestone.getId())));
release = gitLabApi.getReleasesApi().getOptionalRelease(testProject, TEST_TAG_NAME);
assertTrue(release.isPresent());
testRelease = release.get();
assertEquals(TEST_RELEASE_NAME, testRelease.getName());
assertEquals(TEST_TAG_NAME, testRelease.getTagName());
assertEquals(TEST_UPDATED_RELEASE_DESCRIPTION, testRelease.getDescription());
assertEquals(releasedAt, testRelease.getReleasedAt());
assertTrue(testRelease.getMilestones().stream().map(Milestone::getId)
.anyMatch(id -> id.equals(testMilestone.getId())));
gitLabApi.getReleasesApi().deleteRelease(testProject, TEST_TAG_NAME);
release = gitLabApi.getReleasesApi().getOptionalRelease(testProject, TEST_TAG_NAME);
assertFalse(release.isPresent());
} finally {
try {
gitLabApi.getMilestonesApi().deleteMilestone(testProject, testMilestone.getId());
} catch (Exception ignore) {}
}
} }
} }
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment