Split tests of RobotCommentsIT into smaller units

Change-Id: I8a9291c522f69366c66ae06e3a4a2e93c295b50a
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/revision/RobotCommentsIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/revision/RobotCommentsIT.java
index 145caa3..9bba97d 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/revision/RobotCommentsIT.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/revision/RobotCommentsIT.java
@@ -26,6 +26,7 @@
 import com.google.gerrit.extensions.common.RobotCommentInfo;
 import com.google.gerrit.extensions.restapi.MethodNotAllowedException;
 
+import org.junit.Before;
 import org.junit.Test;
 
 import java.util.Collections;
@@ -34,73 +35,95 @@
 import java.util.Map;
 
 public class RobotCommentsIT extends AbstractDaemonTest {
+  private String changeId;
+
+  @Before
+  public void setUp() throws Exception {
+    PushOneCommit.Result changeResult = createChange();
+    changeId = changeResult.getChangeId();
+  }
+
   @Test
-  public void comments() throws Exception {
+  public void retrievingRobotCommentsBeforeAddingAnyDoesNotRaiseAnException()
+      throws Exception {
     assume().that(notesMigration.enabled()).isTrue();
 
-    PushOneCommit.Result r = createChange();
-
-    Map<String, List<RobotCommentInfo>> out = gApi.changes()
-        .id(r.getChangeId())
-        .revision(r.getCommit().name())
+    Map<String, List<RobotCommentInfo>> robotComments = gApi.changes()
+        .id(changeId)
+        .current()
         .robotComments();
-    assertThat(out).isEmpty();
+
+    assertThat(robotComments).isNotNull();
+    assertThat(robotComments).isEmpty();
+  }
+
+  @Test
+  public void addedRobotCommentsCanBeRetrieved() throws Exception {
+    assume().that(notesMigration.enabled()).isTrue();
 
     RobotCommentInput in = createRobotCommentInput();
-    ReviewInput reviewInput = new ReviewInput();
-    Map<String, List<RobotCommentInput>> robotComments = new HashMap<>();
-    robotComments.put(in.path, Collections.singletonList(in));
-    reviewInput.robotComments = robotComments;
-    reviewInput.message = "comment test";
-    gApi.changes()
-       .id(r.getChangeId())
-       .current()
-       .review(reviewInput);
-
-    out = gApi.changes()
-        .id(r.getChangeId())
-        .revision(r.getCommit().name())
-        .robotComments();
-    assertThat(out).hasSize(1);
-    RobotCommentInfo comment = Iterables.getOnlyElement(out.get(in.path));
-    assertRobotComment(comment, in, false);
-
-    List<RobotCommentInfo> list = gApi.changes()
-        .id(r.getChangeId())
-        .revision(r.getCommit().name())
-        .robotCommentsAsList();
-    assertThat(list).hasSize(1);
-
-    RobotCommentInfo comment2 = list.get(0);
-    assertRobotComment(comment2, in);
-
-    RobotCommentInfo comment3 = gApi.changes()
-        .id(r.getChangeId())
-        .revision(r.getCommit().name())
-        .robotComment(comment.id)
-        .get();
-    assertRobotComment(comment3, in);
-  }
-
-  @Test
-  public void noOptionalFields() throws Exception {
-    assume().that(notesMigration.enabled()).isTrue();
-
-    PushOneCommit.Result r = createChange();
-    RobotCommentInput in = createRobotCommentInputWithMandatoryFields();
-    ReviewInput reviewInput = new ReviewInput();
-    Map<String, List<RobotCommentInput>> robotComments = new HashMap<>();
-    robotComments.put(in.path, Collections.singletonList(in));
-    reviewInput.robotComments = robotComments;
-    reviewInput.message = "comment test";
-    gApi.changes()
-       .id(r.getChangeId())
-       .current()
-       .review(reviewInput);
+    addRobotComment(changeId, in);
 
     Map<String, List<RobotCommentInfo>> out = gApi.changes()
-        .id(r.getChangeId())
-        .revision(r.getCommit().name())
+        .id(changeId)
+        .current()
+        .robotComments();
+
+    assertThat(out).hasSize(1);
+    RobotCommentInfo comment = Iterables.getOnlyElement(out.get(in.path));
+    assertRobotComment(comment, in, false);
+  }
+
+  @Test
+  public void robotCommentsCanBeRetrievedAsList() throws Exception {
+    assume().that(notesMigration.enabled()).isTrue();
+
+    RobotCommentInput robotCommentInput = createRobotCommentInput();
+    addRobotComment(changeId, robotCommentInput);
+
+    List<RobotCommentInfo> robotCommentInfos = gApi.changes()
+        .id(changeId)
+        .current()
+        .robotCommentsAsList();
+
+    assertThat(robotCommentInfos).hasSize(1);
+    RobotCommentInfo robotCommentInfo =
+        Iterables.getOnlyElement(robotCommentInfos);
+    assertRobotComment(robotCommentInfo, robotCommentInput);
+  }
+
+  @Test
+  public void specificRobotCommentCanBeRetrieved() throws Exception {
+    assume().that(notesMigration.enabled()).isTrue();
+
+    RobotCommentInput robotCommentInput = createRobotCommentInput();
+    addRobotComment(changeId, robotCommentInput);
+
+    List<RobotCommentInfo> robotCommentInfos = gApi.changes()
+        .id(changeId)
+        .current()
+        .robotCommentsAsList();
+    RobotCommentInfo robotCommentInfo =
+        Iterables.getOnlyElement(robotCommentInfos);
+
+    RobotCommentInfo specificRobotCommentInfo = gApi.changes()
+        .id(changeId)
+        .current()
+        .robotComment(robotCommentInfo.id)
+        .get();
+    assertRobotComment(specificRobotCommentInfo, robotCommentInput);
+  }
+
+  @Test
+  public void robotCommentWithoutOptionalFieldsCanBeAdded() throws Exception {
+    assume().that(notesMigration.enabled()).isTrue();
+
+    RobotCommentInput in = createRobotCommentInputWithMandatoryFields();
+    addRobotComment(changeId, in);
+
+    Map<String, List<RobotCommentInfo>> out = gApi.changes()
+        .id(changeId)
+        .current()
         .robotComments();
     assertThat(out).hasSize(1);
     RobotCommentInfo comment = Iterables.getOnlyElement(out.get(in.path));
@@ -108,10 +131,9 @@
   }
 
   @Test
-  public void robotCommentsNotSupported() throws Exception {
+  public void robotCommentsNotSupportedWithoutNoteDb() throws Exception {
     assume().that(notesMigration.enabled()).isFalse();
 
-    PushOneCommit.Result r = createChange();
     RobotCommentInput in = createRobotCommentInput();
     ReviewInput reviewInput = new ReviewInput();
     Map<String, List<RobotCommentInput>> robotComments = new HashMap<>();
@@ -122,7 +144,7 @@
     exception.expect(MethodNotAllowedException.class);
     exception.expectMessage("robot comments not supported");
     gApi.changes()
-       .id(r.getChangeId())
+       .id(changeId)
        .current()
        .review(reviewInput);
   }
@@ -146,6 +168,18 @@
     return in;
   }
 
+  private void addRobotComment(String targetChangeId,
+      RobotCommentInput robotCommentInput) throws Exception {
+    ReviewInput reviewInput = new ReviewInput();
+    reviewInput.robotComments = Collections.singletonMap(robotCommentInput.path,
+        Collections.singletonList(robotCommentInput));
+    reviewInput.message = "robot comment test";
+    gApi.changes()
+        .id(targetChangeId)
+        .current()
+        .review(reviewInput);
+  }
+
   private void assertRobotComment(RobotCommentInfo c,
       RobotCommentInput expected) {
     assertRobotComment(c, expected, true);