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 {
}
Response response = put(Response.Status.OK, params,
"projects", getProjectIdOrPath(projectIdOrPath), "releases", tagName);
"projects", getProjectIdOrPath(projectIdOrPath), "releases", urlEncode(tagName));
return (response.readEntity(Release.class));
}
......@@ -141,6 +141,6 @@ public class ReleasesApi extends AbstractApi {
* @throws GitLabApiException if any exception occurs
*/
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 {
private String tagName;
private String description;
private String ref;
private List<Milestone> milestones;
private List<String> milestones;
private Assets assets;
private Date releasedAt;
......@@ -54,15 +54,15 @@ public class ReleaseParams {
return (this);
}
public List<Milestone> getMilestones() {
public List<String> getMilestones() {
return milestones;
}
public void setMilestones(List<Milestone> milestones) {
public void setMilestones(List<String> milestones) {
this.milestones = milestones;
}
public ReleaseParams withMilestones(List<Milestone> milestones) {
public ReleaseParams withMilestones(List<String> milestones) {
this.milestones = milestones;
return (this);
}
......
......@@ -6,9 +6,12 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assume.assumeTrue;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import org.gitlab4j.api.models.Milestone;
import org.gitlab4j.api.models.Project;
import org.gitlab4j.api.models.Release;
import org.gitlab4j.api.models.ReleaseParams;
......@@ -21,10 +24,11 @@ import org.junit.experimental.categories.Category;
@Category(IntegrationTest.class)
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_DESCRIPTION = "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 Project testProject;
......@@ -45,7 +49,7 @@ public class TestReleasesApi extends AbstractIntegrationTest {
@AfterClass
public static void tearDown() {
deleteTestResources();
deleteTestResources();
}
private static final void deleteTestResources() {
......@@ -58,6 +62,15 @@ public class TestReleasesApi extends AbstractIntegrationTest {
try {
gitLabApi.getTagsApi().deleteTag(testProject, TEST_TAG_NAME);
} 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 {
@Test
public void testCreateAndDeleteRelease() throws GitLabApiException {
ReleaseParams params = new ReleaseParams()
.withName(TEST_RELEASE_NAME)
.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());
Milestone testMilestone = gitLabApi.getMilestonesApi().createMilestone(testProject, TEST_MILESTONE_TITLE, null, null, null);
assertNotNull(testMilestone);
List<Release> releases = gitLabApi.getReleasesApi().getReleases(testProject);
assertTrue(releases.stream().map(Release::getTagName).anyMatch(s -> TEST_TAG_NAME.equals(s)));
try {
gitLabApi.getReleasesApi().deleteRelease(testProject, TEST_TAG_NAME);
Optional<Release> release = gitLabApi.getReleasesApi().getOptionalRelease(testProject, TEST_TAG_NAME);
assertFalse(release.isPresent());
ReleaseParams params = new ReleaseParams()
.withName(TEST_RELEASE_NAME)
.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);
assertFalse(releases.stream().map(Release::getTagName).anyMatch(s -> TEST_TAG_NAME.equals(s)));
gitLabApi.getReleasesApi().deleteRelease(testProject, TEST_TAG_NAME);
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
public void testCreateAndUpdateRelease() throws GitLabApiException {
ReleaseParams params = new ReleaseParams()
.withName(TEST_RELEASE_NAME)
.withTagName(TEST_TAG_NAME)
.withDescription(TEST_RELEASE_DESCRIPTION)
.withRef("master");
ReleaseParams params = new ReleaseParams()
.withName(TEST_RELEASE_NAME)
.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());
assertTrue(testRelease.getMilestones() == null || testRelease.getMilestones().isEmpty());
Optional<Release> release = gitLabApi.getReleasesApi().getOptionalRelease(testProject, TEST_TAG_NAME);
assertTrue(release.isPresent());
params = new ReleaseParams()
.withTagName(TEST_TAG_NAME)
.withDescription(TEST_UPDATED_RELEASE_DESCRIPTION);
testRelease = gitLabApi.getReleasesApi().updateRelease(testProject, params);
assertNotNull(testRelease);
assertEquals(TEST_RELEASE_NAME, testRelease.getName());
assertEquals(TEST_TAG_NAME, testRelease.getTagName());
assertEquals(TEST_UPDATED_RELEASE_DESCRIPTION, testRelease.getDescription());
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());
gitLabApi.getReleasesApi().deleteRelease(testProject, TEST_TAG_NAME);
release = gitLabApi.getReleasesApi().getOptionalRelease(testProject, TEST_TAG_NAME);
assertFalse(release.isPresent());
Milestone testMilestone = gitLabApi.getMilestonesApi().createMilestone(testProject, TEST_MILESTONE_TITLE, null, null, null);
assertNotNull(testMilestone);
try {
Date releasedAt = new Date();
params = new ReleaseParams()
.withTagName(TEST_TAG_NAME)
.withDescription(TEST_UPDATED_RELEASE_DESCRIPTION)
.withReleasedAt(releasedAt)
.withMilestones(Collections.singletonList(TEST_MILESTONE_TITLE));
testRelease = gitLabApi.getReleasesApi().updateRelease(testProject, params);
assertNotNull(testRelease);
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())));
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