Avoid mocking ReplicationFetchFilter

ReplicationFetchFilter is a simple interface that can
be implemented with lambdas and there is no need
to use complex Mockito magic.

Change-Id: I2b8d715707c9d9c02fc58c84b7b91aada45de656
diff --git a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/FetchOneTest.java b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/FetchOneTest.java
index 6ce3dbe..7bd95f9 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/FetchOneTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/FetchOneTest.java
@@ -48,6 +48,7 @@
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 import java.util.stream.Stream;
+import junit.framework.AssertionFailedError;
 import org.eclipse.jgit.errors.PackProtocolException;
 import org.eclipse.jgit.lib.ObjectId;
 import org.eclipse.jgit.lib.Ref;
@@ -347,9 +348,7 @@
         Optional.of(List.of(TEST_REF)));
     objectUnderTest.addRefs(refSpecs);
     objectUnderTest.setReplicationFetchFilter(replicationFilter);
-    ReplicationFetchFilter mockFilter = mock(ReplicationFetchFilter.class);
-    when(replicationFilter.get()).thenReturn(mockFilter);
-    when(mockFilter.filter(TEST_PROJECT_NAME, refs)).thenReturn(Set.of(TEST_REF));
+    when(replicationFilter.get()).thenReturn((projectName, fetchRefs) -> Set.of(TEST_REF));
 
     objectUnderTest.run();
 
@@ -379,11 +378,9 @@
     Map<String, Ref> remoteRefsMap = Map.of(REMOTE_REF, mock(Ref.class));
     setupRemoteConfigMock(List.of(ALL_REFS_SPEC));
     setupFetchRefsDatabaseMock(localRefsMap, remoteRefsMap);
-    ReplicationFetchFilter mockFilter = setupReplicationFilterMock(remoteRefs);
+    setupReplicationFilter(remoteRefs, remoteRefs);
 
     objectUnderTest.run();
-
-    verify(mockFilter).filter(TEST_PROJECT_NAME, remoteRefs);
   }
 
   @Test
@@ -397,11 +394,9 @@
         Map.of(REF, mockRef("badc0feebadc0feebadc0feebadc0feebadc0fee"));
     setupRemoteConfigMock(List.of(ALL_REFS_SPEC));
     setupFetchRefsDatabaseMock(localRefsMap, remoteRefsMap);
-    ReplicationFetchFilter mockFilter = setupReplicationFilterMock(remoteRefs);
+    setupReplicationFilter(remoteRefs, remoteRefs);
 
     objectUnderTest.run();
-
-    verify(mockFilter).filter(TEST_PROJECT_NAME, remoteRefs);
   }
 
   @Test
@@ -414,11 +409,9 @@
     Map<String, Ref> remoteRefsMap = Map.of(REF, refValue);
     setupRemoteConfigMock(List.of(ALL_REFS_SPEC));
     setupFetchRefsDatabaseMock(localRefsMap, remoteRefsMap);
-    ReplicationFetchFilter mockFilter = setupReplicationFilterMock(remoteRefs);
+    setupReplicationFilter(Set.of(), remoteRefs);
 
     objectUnderTest.run();
-
-    verify(mockFilter).filter(TEST_PROJECT_NAME, Set.of());
   }
 
   @Test
@@ -430,11 +423,9 @@
 
     setupRemoteConfigMock(List.of(DEV_REFS_SPEC));
     setupFetchRefsDatabaseMock(Map.of(), Map.of(REF, mock(Ref.class)));
-    ReplicationFetchFilter mockFilter = setupReplicationFilterMock(remoteRefs);
+    setupReplicationFilter(Set.of(), remoteRefs);
 
     objectUnderTest.run();
-
-    verify(mockFilter).filter(TEST_PROJECT_NAME, Set.of());
   }
 
   @Test
@@ -840,7 +831,7 @@
         List.of(new FetchFactoryEntry.Builder().refSpecNameWithDefaults(TEST_REF).build()),
         Optional.of(List.of(TEST_REF)));
     objectUnderTest.addRefs(refSpecs);
-    setupReplicationFilterMock(Collections.emptySet());
+    setupReplicationFilter(Set.of(), Set.of());
 
     objectUnderTest.run();
 
@@ -862,9 +853,7 @@
         Optional.of(List.of(TEST_REF)));
     objectUnderTest.addRefs(refSpecs);
     objectUnderTest.setReplicationFetchFilter(replicationFilter);
-    ReplicationFetchFilter mockFilter = mock(ReplicationFetchFilter.class);
-    when(replicationFilter.get()).thenReturn(mockFilter);
-    when(mockFilter.filter(TEST_PROJECT_NAME, refs)).thenReturn(Set.of(TEST_REF));
+    when(replicationFilter.get()).thenReturn((projectName, refNames) -> Set.of(TEST_REF));
 
     objectUnderTest.run();
 
@@ -942,12 +931,17 @@
     when(fetchRefsDatabase.getRemoteRefsMap(repository, urIish)).thenReturn(remote);
   }
 
-  private ReplicationFetchFilter setupReplicationFilterMock(Set<String> inRefs) {
+  private void setupReplicationFilter(Set<String> expectedRefs, Set<String> filteredRefs) {
     objectUnderTest.setReplicationFetchFilter(replicationFilter);
-    ReplicationFetchFilter mockFilter = mock(ReplicationFetchFilter.class);
-    when(replicationFilter.get()).thenReturn(mockFilter);
-    when(mockFilter.filter(TEST_PROJECT_NAME, inRefs)).thenReturn(inRefs);
-    return mockFilter;
+    when(replicationFilter.get())
+        .thenReturn(
+            (projectName, refs) -> {
+              if (refs.equals(expectedRefs)) {
+                return filteredRefs;
+              }
+              throw new AssertionFailedError(
+                  "Expected to filter " + expectedRefs + " but received " + refs);
+            });
   }
 
   private List<ReplicationState> createTestStates(FetchRefSpec refSpec, int numberOfStates) {