From 1a10296740b925321c4660096ed0b3e9b2a1f32f Mon Sep 17 00:00:00 2001 From: John Blum Date: Wed, 16 Sep 2020 13:21:00 -0700 Subject: [PATCH] Mock the Map/Region.keySet() operation. --- .../tests/mock/GemFireMockObjectsSupport.java | 3 ++ ...ataAccessOperationsAndEventsUnitTests.java | 40 +++++++++++++++++++ 2 files changed, 43 insertions(+) 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 8191c49..641bedb 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 @@ -2683,6 +2683,9 @@ public abstract class GemFireMockObjectsSupport extends MockObjectsSupport { // Map.isEmpty() / Region.isEmpty() doAnswer(invocation -> data.isEmpty()).when(mockRegion).isEmpty(); + // Map.keySet() / Region.keySet() + doAnswer(invocation -> Collections.unmodifiableSet(data.keySet())).when(mockRegion).keySet(); + // Region.put(key, value) when(mockRegion.put(any(), any())).thenAnswer(invocation -> { diff --git a/spring-data-geode-test/src/test/java/org/springframework/data/gemfire/tests/MockRegionDataAccessOperationsAndEventsUnitTests.java b/spring-data-geode-test/src/test/java/org/springframework/data/gemfire/tests/MockRegionDataAccessOperationsAndEventsUnitTests.java index f17373c..67f4cfd 100644 --- a/spring-data-geode-test/src/test/java/org/springframework/data/gemfire/tests/MockRegionDataAccessOperationsAndEventsUnitTests.java +++ b/spring-data-geode-test/src/test/java/org/springframework/data/gemfire/tests/MockRegionDataAccessOperationsAndEventsUnitTests.java @@ -49,6 +49,7 @@ import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import org.mockito.stubbing.Answer; +import org.apache.geode.UnmodifiableException; import org.apache.geode.cache.CacheListener; import org.apache.geode.cache.CacheLoader; import org.apache.geode.cache.CacheWriter; @@ -638,4 +639,43 @@ public class MockRegionDataAccessOperationsAndEventsUnitTests { assertThat(this.mockRegion).hasSize(0); assertThat(this.mockRegion).isEmpty(); } + + @Test + @SuppressWarnings("rawtypes") + public void mapRegionKeySetIsCorrect() { + + Set keys = this.mockRegion.keySet(); + + assertThat(keys).isNotNull(); + assertThat(keys).isEmpty(); + + this.mockRegion.put(1, "TEST"); + + keys = this.mockRegion.keySet(); + + assertThat(keys).isNotNull(); + assertThat(keys).hasSize(1); + assertThat(keys).containsExactlyInAnyOrder(1); + + this.mockRegion.put(2, "MOCK"); + + keys = this.mockRegion.keySet(); + + assertThat(keys).isNotNull(); + assertThat(keys).hasSize(2); + assertThat(keys).containsExactlyInAnyOrder(1, 2); + + this.mockRegion.remove(1); + + keys = this.mockRegion.keySet(); + + assertThat(keys).isNotNull(); + assertThat(keys).hasSize(1); + assertThat(keys).containsExactlyInAnyOrder(2); + } + + @Test(expected = UnsupportedOperationException.class) + public void mapRegionKeySetIsUnmodifiable() { + this.mockRegion.keySet().add(1); + } }