CodeOwnersOnAddReviewerIT: Test adding multiple code owners as reviewers

Verify that one change message is posted per code owner, when multiple
code owners are added as reviewers at once.

Signed-off-by: Edwin Kempin <ekempin@google.com>
Change-Id: Iec5246e0cb0ee2a8aa2ea964ef2b5fb9dd82af68
diff --git a/javatests/com/google/gerrit/plugins/codeowners/acceptance/api/CodeOwnersOnAddReviewerIT.java b/javatests/com/google/gerrit/plugins/codeowners/acceptance/api/CodeOwnersOnAddReviewerIT.java
index 173b74a..1e94d2b 100644
--- a/javatests/com/google/gerrit/plugins/codeowners/acceptance/api/CodeOwnersOnAddReviewerIT.java
+++ b/javatests/com/google/gerrit/plugins/codeowners/acceptance/api/CodeOwnersOnAddReviewerIT.java
@@ -19,6 +19,7 @@
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Iterables;
+import com.google.gerrit.acceptance.TestAccount;
 import com.google.gerrit.acceptance.config.GerritConfig;
 import com.google.gerrit.entities.BranchNameKey;
 import com.google.gerrit.extensions.api.changes.ReviewInput;
@@ -325,6 +326,44 @@
   }
 
   @Test
+  public void multipleCodeOwnerAddedAsReviewersAtTheSameTime() throws Exception {
+    TestAccount user2 = accountCreator.user2();
+
+    codeOwnerConfigOperations
+        .newCodeOwnerConfig()
+        .project(project)
+        .branch("master")
+        .folderPath("/foo/")
+        .addCodeOwnerEmail(user.email())
+        .addCodeOwnerEmail(user2.email())
+        .create();
+
+    String path = "foo/bar.baz";
+    String changeId = createChange("Test Change", path, "file content").getChangeId();
+
+    // Add code owners 'user' and 'user2' as reviewers.
+    gApi.changes()
+        .id(changeId)
+        .current()
+        .review(ReviewInput.create().reviewer(user.email()).reviewer(user2.email()));
+
+    // We expect that 2 change messages are added:
+    // 1. change message listing the paths owned by the new reviewer 'user'
+    // 2. change message listing the paths owned by the new reviewer 'user2'
+    Collection<ChangeMessageInfo> messages = gApi.changes().id(changeId).get().messages;
+    assertThat(Iterables.get(messages, messages.size() - 2).message)
+        .isEqualTo(
+            String.format(
+                "%s, who was added as reviewer owns the following files:\n* %s\n",
+                AccountTemplateUtil.getAccountTemplate(user.id()), path));
+    assertThat(Iterables.getLast(messages).message)
+        .isEqualTo(
+            String.format(
+                "%s, who was added as reviewer owns the following files:\n* %s\n",
+                AccountTemplateUtil.getAccountTemplate(user2.id()), path));
+  }
+
+  @Test
   public void reviewerAndCodeOwnerApprovalAddedAtTheSameTime() throws Exception {
     codeOwnerConfigOperations
         .newCodeOwnerConfig()