Rename @EnableGemFireMockObjects.destroyOnEvent annotation attribute to 'destroyOnEvents'.

Add additional test cases for the GemFireMockObjectsConfiguration class testing the ApplicationListener and BeanPostProcessor bean configurations.
This commit is contained in:
John Blum
2020-06-17 19:04:13 -07:00
parent 06aeaa62cf
commit 15077eb5f4
3 changed files with 53 additions and 7 deletions

View File

@@ -58,7 +58,7 @@ public @interface EnableGemFireMockObjects {
* @see org.springframework.context.ApplicationEvent
* @see java.lang.Class
*/
Class<? extends ApplicationEvent>[] destroyOnEvent() default { AfterTestClassEvent.class };
Class<? extends ApplicationEvent>[] 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;
}

View File

@@ -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<? extends ApplicationEvent>[] destroyEventTypes = new Class[0];
@@ -68,7 +70,7 @@ public class GemFireMockObjectsConfiguration extends AbstractAnnotationConfigSup
.ifPresent(enableGemFireMockObjectsAttributes -> {
this.destroyEventTypes = (Class<? extends ApplicationEvent>[])
enableGemFireMockObjectsAttributes.getClassArray("destroyOnEvent");
enableGemFireMockObjectsAttributes.getClassArray("destroyOnEvents");
this.useSingletonCache =
enableGemFireMockObjectsAttributes.getBoolean("useSingletonCache");

View File

@@ -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<String, Object> 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.<Boolean>getFieldValue(beanPostProcessor, "useSingletonCache")).isTrue();
verify(configuration, times(1)).isUseSingletonCacheConfigured();
}
@Test
@SuppressWarnings("unchecked")
public void configuresDestroyGemFireMockObjectsApplicationListener() throws NoSuchFieldException {
GemFireMockObjectsConfiguration configuration = spy(new GemFireMockObjectsConfiguration());
Class<? extends ApplicationEvent>[] destroyEventTypes =
new Class[] { ContextRefreshedEvent.class, ContextClosedEvent.class };
doReturn(destroyEventTypes).when(configuration).getConfiguredDestroyEventTypes();
DestroyGemFireMockObjectsApplicationListener applicationListener =
(DestroyGemFireMockObjectsApplicationListener) configuration.destroyGemFireMockObjectsApplicationListener();
assertThat(applicationListener).isNotNull();
assertThat(ReflectionUtils.<Set<Class<? extends ApplicationEvent>>>getFieldValue(applicationListener, "configuredDestroyEventTypes"))
.containsExactlyInAnyOrder(destroyEventTypes);
verify(configuration, times(1)).getConfiguredDestroyEventTypes();
}
}