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 7d0fab7..d5eb5fd 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 @@ -623,7 +623,7 @@ public abstract class GemFireMockObjectsSupport extends MockObjectsSupport { int lastIndexOfRegionSeparator = it.lastIndexOf(Region.SEPARATOR); - return lastIndexOfRegionSeparator < 0 ? it : it.substring(lastIndexOfRegionSeparator); + return lastIndexOfRegionSeparator < 0 ? it : it.substring(lastIndexOfRegionSeparator + 1); }) .filter(it -> !it.isEmpty()) .orElseThrow(() -> newIllegalArgumentException("Region name [%s] is required", regionName)); @@ -2777,6 +2777,8 @@ public abstract class GemFireMockObjectsSupport extends MockObjectsSupport { Region mockSubRegion = mockRegion(parent.getRegionService(), subRegionName, regionAttributes); + doReturn(parent).when(mockSubRegion).getParentRegion(); + parent.subregions(false).add(mockSubRegion); return mockSubRegion; 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 db57f08..b462ce1 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 @@ -465,7 +465,7 @@ public class MockRegionDataAccessOperationsAndEventsUnitTests { @Test @SuppressWarnings("all") - public void mockingPutIfAbsentWorksAsExpected() { + public void mockingUnsupportedPutIfAbsentWorksAsExpected() { doAnswer(invocation -> { 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 b32d64a..ed40dfb 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 @@ -17,6 +17,7 @@ package org.springframework.data.gemfire.tests.mock; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -119,6 +120,26 @@ public class GemFireMockObjectsSupportUnitTests { assertThat(mockClientSubscriptionConfig.getEvictionPolicy()).isEqualTo("entry"); } + @Test + @SuppressWarnings({ "rawtypes", "unchecked" }) + public void mockSubRegionIsCorrect() { + + Region mockRegion = mock(Region.class); + + doReturn("MockRegion").when(mockRegion).getName(); + doReturn("/MockRegion").when(mockRegion).getFullPath(); + + RegionAttributes mockRegionAttributes = mock(RegionAttributes.class); + + Region mockSubRegion = GemFireMockObjectsSupport.mockSubRegion(mockRegion, "MockSubRegion", + mockRegionAttributes); + + assertThat(mockSubRegion).isNotNull(); + assertThat(mockSubRegion.getName()).isEqualTo("MockSubRegion"); + assertThat(mockSubRegion.getFullPath()).isEqualTo("/MockRegion/MockSubRegion"); + assertThat(mockSubRegion.getParentRegion()).isEqualTo(mockRegion); + } + @Test public void regionAttributesMutatorGetRegionReturnsRegion() {