diff --git a/spring-data-geode-test/src/main/java/org/springframework/data/gemfire/tests/mock/annotation/EnableGemFireMockObjects.java b/spring-data-geode-test/src/main/java/org/springframework/data/gemfire/tests/mock/annotation/EnableGemFireMockObjects.java index d538746..c9a6006 100644 --- a/spring-data-geode-test/src/main/java/org/springframework/data/gemfire/tests/mock/annotation/EnableGemFireMockObjects.java +++ b/spring-data-geode-test/src/main/java/org/springframework/data/gemfire/tests/mock/annotation/EnableGemFireMockObjects.java @@ -58,7 +58,7 @@ public @interface EnableGemFireMockObjects { * @see org.springframework.context.ApplicationEvent * @see java.lang.Class */ - Class[] destroyOnEvent() default { AfterTestClassEvent.class }; + Class[] destroyOnEvents() default { AfterTestClassEvent.class }; /** * Configures whether the mock {@link GemFireCache} created for Unit Testing is a Singleton. @@ -68,6 +68,6 @@ public @interface EnableGemFireMockObjects { * @return a boolean value indicating whether the mock {@link GemFireCache} created for Unit Testing * is a Singleton. */ - boolean useSingletonCache() default false; + boolean useSingletonCache() default GemFireMockObjectsConfiguration.DEFAULT_USE_SINGLETON_CACHE; } diff --git a/spring-data-geode-test/src/main/java/org/springframework/data/gemfire/tests/mock/annotation/GemFireMockObjectsConfiguration.java b/spring-data-geode-test/src/main/java/org/springframework/data/gemfire/tests/mock/annotation/GemFireMockObjectsConfiguration.java index 997a4ad..303a1fc 100644 --- a/spring-data-geode-test/src/main/java/org/springframework/data/gemfire/tests/mock/annotation/GemFireMockObjectsConfiguration.java +++ b/spring-data-geode-test/src/main/java/org/springframework/data/gemfire/tests/mock/annotation/GemFireMockObjectsConfiguration.java @@ -53,7 +53,9 @@ import org.springframework.lang.NonNull; @SuppressWarnings("unused") public class GemFireMockObjectsConfiguration extends AbstractAnnotationConfigSupport implements ImportAware { - private boolean useSingletonCache = false; + public static final boolean DEFAULT_USE_SINGLETON_CACHE = false; + + private boolean useSingletonCache = DEFAULT_USE_SINGLETON_CACHE; @SuppressWarnings("unchecked") private Class[] destroyEventTypes = new Class[0]; @@ -68,7 +70,7 @@ public class GemFireMockObjectsConfiguration extends AbstractAnnotationConfigSup .ifPresent(enableGemFireMockObjectsAttributes -> { this.destroyEventTypes = (Class[]) - enableGemFireMockObjectsAttributes.getClassArray("destroyOnEvent"); + enableGemFireMockObjectsAttributes.getClassArray("destroyOnEvents"); this.useSingletonCache = enableGemFireMockObjectsAttributes.getBoolean("useSingletonCache"); diff --git a/spring-data-geode-test/src/test/java/org/springframework/data/gemfire/tests/mock/annotation/GemFireMockObjectsConfigurationUnitTests.java b/spring-data-geode-test/src/test/java/org/springframework/data/gemfire/tests/mock/annotation/GemFireMockObjectsConfigurationUnitTests.java index a187dcd..de01c77 100644 --- a/spring-data-geode-test/src/test/java/org/springframework/data/gemfire/tests/mock/annotation/GemFireMockObjectsConfigurationUnitTests.java +++ b/spring-data-geode-test/src/test/java/org/springframework/data/gemfire/tests/mock/annotation/GemFireMockObjectsConfigurationUnitTests.java @@ -19,16 +19,23 @@ 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.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import java.util.HashMap; import java.util.Map; +import java.util.Set; import org.junit.Test; +import org.springframework.context.ApplicationEvent; import org.springframework.context.event.ContextClosedEvent; +import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.core.type.AnnotationMetadata; +import org.springframework.data.gemfire.tests.mock.beans.factory.config.GemFireMockObjectsBeanPostProcessor; +import org.springframework.data.gemfire.tests.mock.context.event.DestroyGemFireMockObjectsApplicationListener; +import org.springframework.data.gemfire.tests.util.ReflectionUtils; /** * Unit Tests for {@link GemFireMockObjectsConfiguration}. @@ -36,9 +43,9 @@ import org.springframework.core.type.AnnotationMetadata; * @author John Blum * @see org.junit.Test * @see org.mockito.Mockito - * @see org.springframework.context.event.ContextClosedEvent - * @see org.springframework.core.type.AnnotationMetadata * @see org.springframework.data.gemfire.tests.mock.annotation.GemFireMockObjectsConfiguration + * @see org.springframework.data.gemfire.tests.mock.beans.factory.config.GemFireMockObjectsBeanPostProcessor + * @see org.springframework.data.gemfire.tests.mock.context.event.DestroyGemFireMockObjectsApplicationListener * @since 0.0.16 */ public class GemFireMockObjectsConfigurationUnitTests { @@ -53,7 +60,7 @@ public class GemFireMockObjectsConfigurationUnitTests { Map enableGemFireMockObjectsAttributes = new HashMap<>(); - enableGemFireMockObjectsAttributes.put("destroyOnEvent", new Class[] { ContextClosedEvent.class }); + enableGemFireMockObjectsAttributes.put("destroyOnEvents", new Class[] { ContextClosedEvent.class }); enableGemFireMockObjectsAttributes.put("useSingletonCache", true); AnnotationMetadata mockAnnotationMetadata = mock(AnnotationMetadata.class); @@ -74,4 +81,41 @@ public class GemFireMockObjectsConfigurationUnitTests { verify(mockAnnotationMetadata, times(1)) .getAnnotationAttributes(eq(EnableGemFireMockObjects.class.getName())); } + + @Test + public void configuresGemFireMockObjectsBeanPostProcessor() throws NoSuchFieldException { + + GemFireMockObjectsConfiguration configuration = spy(new GemFireMockObjectsConfiguration()); + + doReturn(true).when(configuration).isUseSingletonCacheConfigured(); + + GemFireMockObjectsBeanPostProcessor beanPostProcessor = + (GemFireMockObjectsBeanPostProcessor) configuration.gemfireMockObjectsBeanPostProcessor(); + + assertThat(beanPostProcessor).isNotNull(); + assertThat(ReflectionUtils.getFieldValue(beanPostProcessor, "useSingletonCache")).isTrue(); + + verify(configuration, times(1)).isUseSingletonCacheConfigured(); + } + + @Test + @SuppressWarnings("unchecked") + public void configuresDestroyGemFireMockObjectsApplicationListener() throws NoSuchFieldException { + + GemFireMockObjectsConfiguration configuration = spy(new GemFireMockObjectsConfiguration()); + + Class[] destroyEventTypes = + new Class[] { ContextRefreshedEvent.class, ContextClosedEvent.class }; + + doReturn(destroyEventTypes).when(configuration).getConfiguredDestroyEventTypes(); + + DestroyGemFireMockObjectsApplicationListener applicationListener = + (DestroyGemFireMockObjectsApplicationListener) configuration.destroyGemFireMockObjectsApplicationListener(); + + assertThat(applicationListener).isNotNull(); + assertThat(ReflectionUtils.>>getFieldValue(applicationListener, "configuredDestroyEventTypes")) + .containsExactlyInAnyOrder(destroyEventTypes); + + verify(configuration, times(1)).getConfiguredDestroyEventTypes(); + } }