Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicholas Folk2015-04-20 17:46:22 +0000
committerNicholas Folk2015-04-23 23:32:50 +0000
commitfd0e65fb77fbe6937a0e671cc60a4e17e1d7ed04 (patch)
tree9bea2c08f780c51fbf8462400ebd0687bfdbaccf
parent4dc600cf4703a574129234b1dfdce35c6d1045b1 (diff)
downloadorg.eclipse.mylyn.reviews-fd0e65fb77fbe6937a0e671cc60a4e17e1d7ed04.tar.gz
org.eclipse.mylyn.reviews-fd0e65fb77fbe6937a0e671cc60a4e17e1d7ed04.tar.xz
org.eclipse.mylyn.reviews-fd0e65fb77fbe6937a0e671cc60a4e17e1d7ed04.zip
458662: user can open review with DRAFT status
Change-Id: Ie2d555d911438c1083b7d86fb663f3e6bca4393a Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=458662 Signed-off-by: Nicholas Folk <Nicholas.folk@tasktop.com>
-rw-r--r--org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/client/GerritClient29.java11
-rw-r--r--org.eclipse.mylyn.gerrit.tests/src/org/eclipse/mylyn/internal/gerrit/core/remote/PatchSetDetailRemoteFactoryTest.java43
2 files changed, 49 insertions, 5 deletions
diff --git a/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/client/GerritClient29.java b/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/client/GerritClient29.java
index b23bcbfe4..c3171ac63 100644
--- a/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/client/GerritClient29.java
+++ b/org.eclipse.mylyn.gerrit.core/src/org/eclipse/mylyn/internal/gerrit/core/client/GerritClient29.java
@@ -195,8 +195,10 @@ public class GerritClient29 extends GerritClient {
Branch.NameKey branchKey = getBranchKey(changeInfo);
Change currentChange = createChange(changeInfo.getChangeId(), id.getParentKey().get(), accountInfo, branchKey);
- currentChange.setStatus(changeInfo.getStatus());
-
+ com.google.gerrit.reviewdb.Change.Status status = changeInfo.getStatus();
+ if (status != null) {
+ currentChange.setStatus(status);
+ }
publishDetail.setChange(currentChange);
PatchSetInfo patchSetInfo = getPatchSetInfo(changeInfo.getCurrentPatchSetId(), changeInfo.getSubject());
@@ -348,7 +350,10 @@ public class GerritClient29 extends GerritClient {
initialChange.setCurrentPatchSet(patchSetInfo);
- initialChange.setStatus(changeInfo.getStatus());
+ com.google.gerrit.reviewdb.Change.Status status = changeInfo.getStatus();
+ if (status != null) {
+ initialChange.setStatus(status);
+ }
changeDetail.setChange(initialChange);
getAdditionalChangeInfo(reviewId, changeDetail, monitor);
return changeDetail;
diff --git a/org.eclipse.mylyn.gerrit.tests/src/org/eclipse/mylyn/internal/gerrit/core/remote/PatchSetDetailRemoteFactoryTest.java b/org.eclipse.mylyn.gerrit.tests/src/org/eclipse/mylyn/internal/gerrit/core/remote/PatchSetDetailRemoteFactoryTest.java
index a14fcae82..cc73afbb4 100644
--- a/org.eclipse.mylyn.gerrit.tests/src/org/eclipse/mylyn/internal/gerrit/core/remote/PatchSetDetailRemoteFactoryTest.java
+++ b/org.eclipse.mylyn.gerrit.tests/src/org/eclipse/mylyn/internal/gerrit/core/remote/PatchSetDetailRemoteFactoryTest.java
@@ -13,6 +13,7 @@ package org.eclipse.mylyn.internal.gerrit.core.remote;
import static org.eclipse.mylyn.internal.gerrit.core.remote.TestRemoteObserverConsumer.retrieveForLocalKey;
import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.notNullValue;
import static org.junit.Assert.assertThat;
import java.util.List;
@@ -23,6 +24,9 @@ import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jgit.api.CommitCommand;
import org.eclipse.mylyn.commons.sdk.util.CommonTestUtil.PrivilegeLevel;
import org.eclipse.mylyn.gerrit.tests.support.GerritFixture;
+import org.eclipse.mylyn.internal.gerrit.core.client.GerritException;
+import org.eclipse.mylyn.internal.gerrit.core.client.compat.ChangeDetailX;
+import org.eclipse.mylyn.internal.gerrit.core.client.compat.PatchSetPublishDetailX;
import org.eclipse.mylyn.reviews.core.model.IReview;
import org.eclipse.mylyn.reviews.core.model.IReviewItemSet;
import org.junit.After;
@@ -31,6 +35,8 @@ import org.junit.Test;
import com.google.common.collect.ImmutableList;
import com.google.gerrit.common.data.PatchSetDetail;
+import com.google.gerrit.reviewdb.Change;
+import com.google.gerrit.reviewdb.PatchSet;
public class PatchSetDetailRemoteFactoryTest extends TestCase {
@@ -87,6 +93,39 @@ public class PatchSetDetailRemoteFactoryTest extends TestCase {
}
+ @Test
+ public void testGetPatchSetPublishDetailOfDraftIffAdmin() throws Exception {
+ int reviewId = Integer.parseInt(reviewHarness.getShortId());
+ PatchSet.Id id = new PatchSet.Id(new Change.Id(reviewId), 1);
+ PatchSetPublishDetailX patchSetDetail;
+ try {
+ patchSetDetail = reviewHarness.getClient().getPatchSetPublishDetail(id, new NullProgressMonitor());
+ fail("Expected Gerrit Exception");
+ } catch (GerritException e) {
+ } // Needs admin client to view admin-created draft
+ patchSetDetail = reviewHarness.getAdminClient().getPatchSetPublishDetail(id, new NullProgressMonitor());
+
+ assertThat(patchSetDetail, notNullValue());
+ // DRAFT is not correctly parsed for ChangeInfo since Change.Status does not define the corresponding enum field
+ assertThat(patchSetDetail.getChange().getStatus(), is(Change.Status.NEW));
+ }
+
+ @Test
+ public void testGetChangeDetailOfDraftIffAdmin() throws Exception {
+ int reviewId = Integer.parseInt(reviewHarness.getShortId());
+ ChangeDetailX changeDetail;
+ try {
+ changeDetail = reviewHarness.getClient().getChangeDetail(reviewId, new NullProgressMonitor());
+ fail("Expected Gerrit Exception");
+ } catch (GerritException e) {
+ } // Needs admin client to view admin-created draft
+ changeDetail = reviewHarness.getAdminClient().getChangeDetail(reviewId, new NullProgressMonitor());
+
+ assertThat(changeDetail, notNullValue());
+ // DRAFT is not correctly parsed for ChangeInfo since Change.Status does not define the corresponding enum field
+ assertThat(changeDetail.getChange().getStatus(), is(Change.Status.NEW));
+ }
+
private void createPatchSet(String pushTo, PrivilegeLevel privilegeLevel, List<String> files) throws Exception {
CommitCommand command = reviewHarness.createCommitCommand();
for (String fileName : files) {
@@ -97,8 +136,8 @@ public class PatchSetDetailRemoteFactoryTest extends TestCase {
private PatchSetDetail retrievePatchSetDetail(String patchSetId) {
TestRemoteObserverConsumer<IReview, IReviewItemSet, String, PatchSetDetail, PatchSetDetail, String> itemSetObserver //
- = retrieveForLocalKey(reviewHarness.getProvider().getReviewItemSetFactory(), reviewHarness.getReview(), patchSetId,
- false);
+ = retrieveForLocalKey(reviewHarness.getProvider().getReviewItemSetFactory(), reviewHarness.getReview(),
+ patchSetId, false);
PatchSetDetail detail = itemSetObserver.getRemoteObject();
return detail;
}

Back to the top