Refactor EiffelEventParserIT

In preparation for tests for the EiffelEventParsingQueue.
* Extract TestModule to separate file.
* Introduce super class EiffelEventParsingTest with common methods
  for verifying event parsing.

Solves: Jira GER-1715
Change-Id: I778685bf32dcad7e0a50dbc849daf2b484e7bdd4
diff --git a/src/test/java/com/googlesource/gerrit/plugins/eventseiffel/parsing/EiffelEventParserIT.java b/src/test/java/com/googlesource/gerrit/plugins/eventseiffel/parsing/EiffelEventParserIT.java
index d20034b..509beba 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/eventseiffel/parsing/EiffelEventParserIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/eventseiffel/parsing/EiffelEventParserIT.java
@@ -23,27 +23,12 @@
 import com.google.gerrit.acceptance.UseLocalDisk;
 import com.google.gerrit.acceptance.config.GlobalPluginConfig;
 import com.google.gerrit.extensions.common.AccountInfo;
-import com.google.inject.AbstractModule;
-import com.google.inject.Scopes;
-import com.google.inject.Singleton;
-import com.googlesource.gerrit.plugins.eventseiffel.EiffelEventHub;
-import com.googlesource.gerrit.plugins.eventseiffel.EiffelEventsTest;
 import com.googlesource.gerrit.plugins.eventseiffel.TestEventHub;
 import com.googlesource.gerrit.plugins.eventseiffel.TestEventStorage;
-import com.googlesource.gerrit.plugins.eventseiffel.cache.EiffelEventIdCacheImpl;
-import com.googlesource.gerrit.plugins.eventseiffel.config.EiffelConfig;
-import com.googlesource.gerrit.plugins.eventseiffel.config.EventIdCacheConfig;
-import com.googlesource.gerrit.plugins.eventseiffel.config.EventMappingConfig;
 import com.googlesource.gerrit.plugins.eventseiffel.eiffel.ArtifactEventKey;
 import com.googlesource.gerrit.plugins.eventseiffel.eiffel.CompositionDefinedEventKey;
-import com.googlesource.gerrit.plugins.eventseiffel.eiffel.EventKey;
 import com.googlesource.gerrit.plugins.eventseiffel.eiffel.SourceChangeEventKey;
-import com.googlesource.gerrit.plugins.eventseiffel.eiffel.api.EventStorage;
 import com.googlesource.gerrit.plugins.eventseiffel.eiffel.dto.EiffelSourceChangeSubmittedEventInfo;
-import com.googlesource.gerrit.plugins.eventseiffel.mapping.EiffelEventFactory;
-import com.googlesource.gerrit.plugins.eventseiffel.mapping.EiffelEventMapper;
-import java.net.URLEncoder;
-import java.nio.charset.StandardCharsets;
 import java.time.Instant;
 import org.eclipse.jgit.lib.Constants;
 import org.eclipse.jgit.revwalk.RevCommit;
@@ -52,10 +37,8 @@
 
 @TestPlugin(
     name = "events-eiffel",
-    sysModule =
-        "com.googlesource.gerrit.plugins.eventseiffel.parsing.EiffelEventParserIT$TestModule")
-public class EiffelEventParserIT extends EiffelEventsTest {
-  private static final Long EPOCH_MILLIS = 978307261000l;
+    sysModule = "com.googlesource.gerrit.plugins.eventseiffel.parsing.ParsingTestModule")
+public class EiffelEventParserIT extends EiffelEventParsingTest {
 
   private EiffelEventParserImpl eventParser;
 
@@ -239,12 +222,6 @@
     return ref;
   }
 
-  private void setScsHandled() throws Exception {
-    SourceChangeEventKey scs =
-        SourceChangeEventKey.scsKey(project.get(), getHead(), getHeadRevision());
-    markAsHandled(scs, getHead(repo(), "HEAD"));
-  }
-
   @Test
   public void artcQueued() throws Exception {
     eventParser.createAndScheduleArtc(project.get(), TAG_NAME, EPOCH_MILLIS, false);
@@ -297,56 +274,4 @@
   private void assertNbrQueriesFor(SourceChangeEventKey key, int nbrQueries) {
     assertEquals(nbrQueries, TestEventStorage.INSTANCE.queriesFor(key));
   }
-
-  private String getHead() throws Exception {
-    return gApi.projects().name(project.get()).head();
-  }
-
-  private String getHeadRevision() throws Exception {
-    return getHead(repo(), "HEAD").getName();
-  }
-
-  private void assertCorrectEvent(int order, EventKey expected) {
-    EventKey actual = EventKey.fromEvent(TestEventHub.EVENTS.get(order));
-    assertEquals(expected, actual);
-  }
-
-  protected static String tagCompositionName(String projectName) {
-    return tagCompositionName(projectName, "localhost");
-  }
-
-  protected static String tagCompositionName(String projectName, String namespace) {
-    return "scmtag/git/" + namespace + "/" + URLEncoder.encode(projectName, StandardCharsets.UTF_8);
-  }
-
-  protected static String tagPURL(String projectName, String tagName) {
-    return tagPURL(projectName, tagName, "localhost");
-  }
-
-  protected static String tagPURL(String projectName, String tagName, String namespace) {
-    return String.format(
-        TAG_PURL_TEMPLATE,
-        namespace,
-        projectName,
-        tagName,
-        String.format("ssh://%s/%s", HOST_NAME, projectName),
-        tagName);
-  }
-
-  public static class TestModule extends AbstractModule {
-    @Override
-    protected void configure() {
-      bind(EventStorage.class).toProvider(TestEventStorage.Provider.class).in(Singleton.class);
-      bind(EventIdCacheConfig.class).toProvider(EventIdCacheConfig.Provider.class);
-      install(EiffelEventIdCacheImpl.module());
-      bind(EiffelEventHub.class).to(TestEventHub.class);
-      bind(EventMappingConfig.class).toProvider(EventMappingConfig.Provider.class);
-      bind(EiffelEventMapper.class);
-      bind(EiffelEventParser.class).to(EiffelEventParserImpl.class);
-      bind(EiffelConfig.class).toProvider(EiffelConfig.Provider.class).in(Scopes.SINGLETON);
-      bind(EiffelEventFactory.class)
-          .toProvider(EiffelEventFactory.Provider.class)
-          .in(Scopes.SINGLETON);
-    }
-  }
 }
diff --git a/src/test/java/com/googlesource/gerrit/plugins/eventseiffel/parsing/EiffelEventParsingTest.java b/src/test/java/com/googlesource/gerrit/plugins/eventseiffel/parsing/EiffelEventParsingTest.java
new file mode 100644
index 0000000..7d8c926
--- /dev/null
+++ b/src/test/java/com/googlesource/gerrit/plugins/eventseiffel/parsing/EiffelEventParsingTest.java
@@ -0,0 +1,57 @@
+package com.googlesource.gerrit.plugins.eventseiffel.parsing;
+
+import static org.junit.Assert.assertEquals;
+
+import com.googlesource.gerrit.plugins.eventseiffel.EiffelEventsTest;
+import com.googlesource.gerrit.plugins.eventseiffel.TestEventHub;
+import com.googlesource.gerrit.plugins.eventseiffel.eiffel.EventKey;
+import com.googlesource.gerrit.plugins.eventseiffel.eiffel.SourceChangeEventKey;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import org.junit.Ignore;
+
+@Ignore
+public class EiffelEventParsingTest extends EiffelEventsTest {
+  protected static final Long EPOCH_MILLIS = 978307261000l;
+
+  protected static String tagCompositionName(String projectName) {
+    return tagCompositionName(projectName, "localhost");
+  }
+
+  protected static String tagCompositionName(String projectName, String namespace) {
+    return "scmtag/git/" + namespace + "/" + URLEncoder.encode(projectName, StandardCharsets.UTF_8);
+  }
+
+  protected static String tagPURL(String projectName, String tagName) {
+    return tagPURL(projectName, tagName, "localhost");
+  }
+
+  protected static String tagPURL(String projectName, String tagName, String namespace) {
+    return String.format(
+        TAG_PURL_TEMPLATE,
+        namespace,
+        projectName,
+        tagName,
+        String.format("ssh://%s/%s", HOST_NAME, projectName),
+        tagName);
+  }
+
+  protected void assertCorrectEvent(int order, EventKey expected) {
+    EventKey actual = EventKey.fromEvent(TestEventHub.EVENTS.get(order));
+    assertEquals(expected, actual);
+  }
+
+  protected void setScsHandled() throws Exception {
+    SourceChangeEventKey scs =
+        SourceChangeEventKey.scsKey(project.get(), getHead(), getHeadRevision());
+    markAsHandled(scs, getHead(repo(), "HEAD"));
+  }
+
+  protected String getHead() throws Exception {
+    return gApi.projects().name(project.get()).head();
+  }
+
+  protected String getHeadRevision() throws Exception {
+    return getHead(repo(), "HEAD").getName();
+  }
+}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/eventseiffel/parsing/ParsingTestModule.java b/src/test/java/com/googlesource/gerrit/plugins/eventseiffel/parsing/ParsingTestModule.java
new file mode 100644
index 0000000..f3fe7e5
--- /dev/null
+++ b/src/test/java/com/googlesource/gerrit/plugins/eventseiffel/parsing/ParsingTestModule.java
@@ -0,0 +1,34 @@
+package com.googlesource.gerrit.plugins.eventseiffel.parsing;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Scopes;
+import com.google.inject.Singleton;
+import com.googlesource.gerrit.plugins.eventseiffel.EiffelEventHub;
+import com.googlesource.gerrit.plugins.eventseiffel.TestEventHub;
+import com.googlesource.gerrit.plugins.eventseiffel.TestEventStorage;
+import com.googlesource.gerrit.plugins.eventseiffel.cache.EiffelEventIdCacheImpl;
+import com.googlesource.gerrit.plugins.eventseiffel.config.EiffelConfig;
+import com.googlesource.gerrit.plugins.eventseiffel.config.EventIdCacheConfig;
+import com.googlesource.gerrit.plugins.eventseiffel.config.EventMappingConfig;
+import com.googlesource.gerrit.plugins.eventseiffel.eiffel.api.EventStorage;
+import com.googlesource.gerrit.plugins.eventseiffel.mapping.EiffelEventFactory;
+import com.googlesource.gerrit.plugins.eventseiffel.mapping.EiffelEventMapper;
+import org.junit.Ignore;
+
+@Ignore
+public class ParsingTestModule extends AbstractModule {
+  @Override
+  protected void configure() {
+    bind(EventStorage.class).toProvider(TestEventStorage.Provider.class).in(Singleton.class);
+    bind(EventIdCacheConfig.class).toProvider(EventIdCacheConfig.Provider.class);
+    install(EiffelEventIdCacheImpl.module());
+    bind(EiffelEventHub.class).to(TestEventHub.class);
+    bind(EventMappingConfig.class).toProvider(EventMappingConfig.Provider.class);
+    bind(EiffelEventMapper.class);
+    bind(EiffelEventParser.class).to(EiffelEventParserImpl.class);
+    bind(EiffelConfig.class).toProvider(EiffelConfig.Provider.class).in(Scopes.SINGLETON);
+    bind(EiffelEventFactory.class)
+        .toProvider(EiffelEventFactory.Provider.class)
+        .in(Scopes.SINGLETON);
+  }
+}