diff --git a/spring-data-geode-test/src/main/java/org/springframework/data/gemfire/tests/mock/GemFireMockObjectsSupport.java b/spring-data-geode-test/src/main/java/org/springframework/data/gemfire/tests/mock/GemFireMockObjectsSupport.java index b2ca90e..e34956e 100644 --- a/spring-data-geode-test/src/main/java/org/springframework/data/gemfire/tests/mock/GemFireMockObjectsSupport.java +++ b/spring-data-geode-test/src/main/java/org/springframework/data/gemfire/tests/mock/GemFireMockObjectsSupport.java @@ -21,6 +21,7 @@ import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyFloat; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyLong; +import static org.mockito.ArgumentMatchers.anyMap; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doNothing; @@ -2362,7 +2363,7 @@ public abstract class GemFireMockObjectsSupport extends MockObjectsSupport { return mockLuceneIndexFactory; }); - when(mockLuceneIndexFactory.setFields(any(String[].class))).thenAnswer(invocation -> { + when(mockLuceneIndexFactory.setFields(ArgumentMatchers.any())).thenAnswer(invocation -> { Object[] fieldsArgument = invocation.getArguments(); @@ -2378,27 +2379,21 @@ public abstract class GemFireMockObjectsSupport extends MockObjectsSupport { return mockLuceneIndexFactory; }); - when(mockLuceneIndexFactory.setFields(any(Map.class))).thenAnswer(invocation -> { + when(mockLuceneIndexFactory.setFields(anyMap())).thenAnswer(invocation -> { Map fieldAnalyzersArgument = invocation.getArgument(0); fieldAnalyzers.clear(); - fieldAnalyzers.putAll(CollectionUtils.nullSafeMap(fieldAnalyzers)); + fieldAnalyzers.putAll(CollectionUtils.nullSafeMap(fieldAnalyzersArgument)); return mockLuceneIndexFactory; }); when(mockLuceneIndexFactory.setLuceneSerializer(any(LuceneSerializer.class))).thenAnswer(invocation -> { - Optional.ofNullable(invocation.getArgument(0)) - .map(it -> { - luceneSerializer.set(it); - return it; - }) - .orElseGet(() -> { - luceneSerializer.set(null); - return null; - }); + LuceneSerializer luceneSerializerArgument = invocation.getArgument(0); + + luceneSerializer.set(luceneSerializerArgument); return mockLuceneIndexFactory; }); diff --git a/spring-data-geode-test/src/test/java/org/springframework/data/gemfire/tests/mock/GemFireMockObjectsSupportUnitTests.java b/spring-data-geode-test/src/test/java/org/springframework/data/gemfire/tests/mock/GemFireMockObjectsSupportUnitTests.java index 0224f75..c495fd1 100644 --- a/spring-data-geode-test/src/test/java/org/springframework/data/gemfire/tests/mock/GemFireMockObjectsSupportUnitTests.java +++ b/spring-data-geode-test/src/test/java/org/springframework/data/gemfire/tests/mock/GemFireMockObjectsSupportUnitTests.java @@ -22,6 +22,9 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; +import java.util.HashMap; +import java.util.Map; + import org.junit.After; import org.junit.Test; @@ -33,8 +36,14 @@ import org.apache.geode.cache.RegionService; import org.apache.geode.cache.asyncqueue.AsyncEventListener; import org.apache.geode.cache.asyncqueue.AsyncEventQueue; import org.apache.geode.cache.asyncqueue.AsyncEventQueueFactory; +import org.apache.geode.cache.lucene.LuceneIndex; +import org.apache.geode.cache.lucene.LuceneIndexFactory; +import org.apache.geode.cache.lucene.LuceneSerializer; +import org.apache.geode.cache.lucene.LuceneService; import org.apache.geode.cache.server.ClientSubscriptionConfig; +import org.apache.lucene.analysis.Analyzer; + /** * Unit Tests for {@link GemFireMockObjectsSupport}. * @@ -129,6 +138,46 @@ public class GemFireMockObjectsSupportUnitTests { assertThat(mockClientSubscriptionConfig.getEvictionPolicy()).isEqualTo("entry"); } + @Test + public void mockLuceneFunctionality() { + + Cache mockCache = mock(Cache.class); + + LuceneService mockLuceneService = GemFireMockObjectsSupport.mockLuceneService(mockCache); + + assertThat(mockLuceneService).isNotNull(); + assertThat(mockLuceneService.getAllIndexes()).isEmpty(); + assertThat(mockLuceneService.getCache()).isEqualTo(mockCache); + + LuceneSerializer mockLuceneSerializer = mock(LuceneSerializer.class); + + LuceneIndexFactory mockLuceneIndexFactory = mockLuceneService.createIndexFactory(); + + assertThat(mockLuceneIndexFactory).isNotNull(); + + Analyzer mockAnalyzer = mock(Analyzer.class); + + Map fieldAnalyzers = new HashMap<>(); + + fieldAnalyzers.put("fieldZero", mockAnalyzer); + + mockLuceneIndexFactory.setFields("FieldOne", "FieldTwo"); + mockLuceneIndexFactory.setLuceneSerializer(mockLuceneSerializer); + mockLuceneIndexFactory.addField("FieldThree"); + mockLuceneIndexFactory.setFields(fieldAnalyzers); + mockLuceneIndexFactory.create("MockLuceneIndex", "/Test"); + + LuceneIndex mockLuceneIndex = mockLuceneService.getIndex("MockLuceneIndex", "/Test"); + + assertThat(mockLuceneIndex).isNotNull(); + assertThat(mockLuceneIndex.getRegionPath()).isEqualTo("/Test"); + assertThat(mockLuceneIndex.getName()).isEqualTo("MockLuceneIndex"); + assertThat(mockLuceneIndex.getLuceneSerializer()).isEqualTo(mockLuceneSerializer); + assertThat(mockLuceneIndex.getFieldNames()).containsExactlyInAnyOrder("FieldOne", "FieldTwo", "FieldThree"); + assertThat(mockLuceneIndex.getFieldAnalyzers()).isEqualTo(fieldAnalyzers); + assertThat(mockLuceneService.getAllIndexes()).containsExactly(mockLuceneIndex); + } + @Test @SuppressWarnings({ "rawtypes", "unchecked" }) public void mockSubRegionIsCorrect() {