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) {