diff options
author | Nicholas Folk | 2015-04-20 17:46:22 +0000 |
---|---|---|
committer | Nicholas Folk | 2015-04-23 23:32:50 +0000 |
commit | fd0e65fb77fbe6937a0e671cc60a4e17e1d7ed04 (patch) | |
tree | 9bea2c08f780c51fbf8462400ebd0687bfdbaccf | |
parent | 4dc600cf4703a574129234b1dfdce35c6d1045b1 (diff) | |
download | org.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>
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; } |