add unit test for pretty=fuller query parameter

Change-Id: I07c7fcddc9953f9971c0ff4592f4b81cc6145528
diff --git a/javatests/com/google/gitiles/LogServletTest.java b/javatests/com/google/gitiles/LogServletTest.java
index 3ad90a8..d875e0e 100644
--- a/javatests/com/google/gitiles/LogServletTest.java
+++ b/javatests/com/google/gitiles/LogServletTest.java
@@ -32,6 +32,9 @@
 public class LogServletTest extends ServletTest {
   private static final TypeToken<Log> LOG = new TypeToken<Log>() {};
   private static final String MAIN = "main";
+  private static final String AUTHOR_METADATA_ELEMENT = "<th class=\"Metadata-title\">author</th>";
+  private static final String COMMITTER_METADATA_ELEMENT =
+      "<th class=\"Metadata-title\">committer</th>";
 
   @Test
   public void basicLog() throws Exception {
@@ -195,4 +198,68 @@
                 + parent.toObjectId().getName()
                 + "\">");
   }
+
+  @Test
+  public void prettyDefaultUsesDefaultCssClass() throws Exception {
+    RevCommit parent = repo.branch(MAIN).commit().add("foo", "contents").create();
+    RevCommit main = repo.branch(MAIN).commit().parent(parent).create();
+
+    String path =
+        "/repo/+log/" + parent.toObjectId().getName() + ".." + main.toObjectId().getName();
+    FakeHttpServletResponse res = buildResponse(path, "format=html", SC_OK);
+
+    assertThat(res.getActualBodyString())
+        .contains("<li class=\"CommitLog-item CommitLog-item--default\">");
+    assertThat(res.getActualBodyString()).doesNotContain(AUTHOR_METADATA_ELEMENT);
+    assertThat(res.getActualBodyString()).doesNotContain(COMMITTER_METADATA_ELEMENT);
+  }
+
+  @Test
+  public void prettyExplicitlyDefaultUsesDefaultCssClass() throws Exception {
+    testPrettyHtmlOutput(
+        "default", /* shouldShowAuthor= */ false, /* shouldShowCommitter= */ false);
+  }
+
+  @Test
+  public void prettyOnelineUsesOnelineCssClass() throws Exception {
+    testPrettyHtmlOutput(
+        "oneline", /* shouldShowAuthor= */ false, /* shouldShowCommitter= */ false);
+  }
+
+  @Test
+  public void prettyCustomTypeUsesCustomCssClass() throws Exception {
+    testPrettyHtmlOutput(
+        "aCustomPrettyType", /* shouldShowAuthor= */ false, /* shouldShowCommitter= */ false);
+  }
+
+  @Test
+  public void prettyFullerUsesFullerCssClass() throws Exception {
+    testPrettyHtmlOutput("fuller", /* shouldShowAuthor= */ true, /* shouldShowCommitter= */ true);
+  }
+
+  private void testPrettyHtmlOutput(
+      String prettyType, boolean shouldShowAuthor, boolean shouldShowCommitter) throws Exception {
+    RevCommit parent = repo.branch(MAIN).commit().add("foo", "contents").create();
+    RevCommit main = repo.branch(MAIN).commit().parent(parent).create();
+
+    String path =
+        "/repo/+log/" + parent.toObjectId().getName() + ".." + main.toObjectId().getName();
+    FakeHttpServletResponse res =
+        buildResponse(path, "format=html" + "&pretty=" + prettyType, SC_OK);
+
+    assertThat(res.getActualBodyString())
+        .contains("<li class=\"CommitLog-item CommitLog-item--" + prettyType + "\">");
+
+    if (shouldShowAuthor) {
+      assertThat(res.getActualBodyString()).contains(AUTHOR_METADATA_ELEMENT);
+    } else {
+      assertThat(res.getActualBodyString()).doesNotContain(AUTHOR_METADATA_ELEMENT);
+    }
+
+    if (shouldShowCommitter) {
+      assertThat(res.getActualBodyString()).contains(COMMITTER_METADATA_ELEMENT);
+    } else {
+      assertThat(res.getActualBodyString()).doesNotContain(COMMITTER_METADATA_ELEMENT);
+    }
+  }
 }