Fix bug with isChangeReviewed()

Bug was introduced where reviews will remain bold on the UI even if
the user has already reviewed the change. This corrects the bug by
fixing the order in which the change messages are sorted in the
isChangeReviewed() method. Additionally, two tests were added to test
this functionality.

Change-Id: I5f946d251de6689a9090af059a01a1616933b07a
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/change/ChangeIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/change/ChangeIT.java
index 5c2c1ea..baa21cc 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/change/ChangeIT.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/change/ChangeIT.java
@@ -262,4 +262,35 @@
     setApiUser(user);
     assertTrue(query("owner:self").isEmpty());
   }
+
+  @Test
+  public void queryChangesReviewerAfterReview() throws Exception {
+    PushOneCommit.Result r = createChange();
+    AddReviewerInput in = new AddReviewerInput();
+    in.reviewer = user.email;
+    gApi.changes()
+        .id("p~master~" + r.getChangeId())
+        .addReviewer(in);
+
+    setApiUser(user);
+    assertNull(get(r.getChangeId()).reviewed);
+
+    revision(r).review(ReviewInput.recommend());
+
+    assertTrue(get(r.getChangeId()).reviewed);
+  }
+
+  @Test
+  public void queryChangesReviewerNotReviewed() throws Exception {
+    PushOneCommit.Result r = createChange();
+    AddReviewerInput in = new AddReviewerInput();
+    in.reviewer = user.email;
+    gApi.changes()
+        .id("p~master~" + r.getChangeId())
+        .addReviewer(in);
+
+    setApiUser(user);
+
+    assertNull(get(r.getChangeId()).reviewed);
+  }
 }
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeJson.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeJson.java
index 80ddfe9..653310d 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeJson.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeJson.java
@@ -717,6 +717,7 @@
       List<ChangeMessage> msgs) throws OrmException {
     // Sort messages to keep the most recent ones at the beginning.
     msgs = ChangeNotes.MESSAGE_BY_TIME.sortedCopy(msgs);
+    Collections.reverse(msgs);
 
     Account.Id changeOwnerId = cd.change().getOwner();
     for (ChangeMessage cm : msgs) {