From 4139d17009c2c84d17636f4cd858380f7701d845 Mon Sep 17 00:00:00 2001 From: John Blum Date: Fri, 17 Jan 2020 14:14:14 -0800 Subject: [PATCH] DATAGEODE-291 - Refactor the MappingPdxSerializerIntegrationTests to rely less on the internals of SD Commons. Changed from using a mock PersistentEntity to creating an actual PersistentEntity instance based the Person.class and Address.class types by using the GemfireMappingContext. --- .../MappingPdxSerializerIntegrationTests.java | 37 +++++++++---------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/spring-data-geode/src/test/java/org/springframework/data/gemfire/mapping/MappingPdxSerializerIntegrationTests.java b/spring-data-geode/src/test/java/org/springframework/data/gemfire/mapping/MappingPdxSerializerIntegrationTests.java index 3bdc6592..87b2611e 100644 --- a/spring-data-geode/src/test/java/org/springframework/data/gemfire/mapping/MappingPdxSerializerIntegrationTests.java +++ b/spring-data-geode/src/test/java/org/springframework/data/gemfire/mapping/MappingPdxSerializerIntegrationTests.java @@ -19,7 +19,6 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.isA; -import static org.mockito.Mockito.atLeast; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; @@ -35,7 +34,6 @@ import java.time.LocalDateTime; import java.time.Month; import java.util.Base64; import java.util.Collections; -import java.util.Map; import java.util.Optional; import org.junit.After; @@ -60,6 +58,7 @@ import org.springframework.data.gemfire.repository.sample.Address; import org.springframework.data.gemfire.repository.sample.Person; import org.springframework.data.mapping.PersistentEntity; import org.springframework.data.mapping.model.EntityInstantiator; +import org.springframework.data.util.ClassTypeInformation; import lombok.AllArgsConstructor; import lombok.Data; @@ -73,6 +72,14 @@ import lombok.Setter; * * @author Oliver Gierke * @author John Blum + * @see org.apache.geode.cache.Cache + * @see org.apache.geode.cache.Region + * @see org.apache.geode.pdx.PdxReader + * @see org.apache.geode.pdx.PdxSerializer + * @see org.apache.geode.pdx.PdxWriter + * @see org.springframework.data.gemfire.mapping.MappingPdxSerializer + * @see org.springframework.data.mapping.PersistentEntity + * @see org.springframework.data.mapping.model.EntityInstantiator */ public class MappingPdxSerializerIntegrationTests { @@ -105,6 +112,8 @@ public class MappingPdxSerializerIntegrationTests { GemfireUtils.close(cache); } + private final GemfireMappingContext mappingContext = new GemfireMappingContext(); + @After public void clearRegion() { region.removeAll(region.keySet()); @@ -162,27 +171,21 @@ public class MappingPdxSerializerIntegrationTests { EntityInstantiator mockEntityInstantiator = mock(EntityInstantiator.class); - Map, EntityInstantiator> entityInstantiators = - Collections.singletonMap(Person.class, mockEntityInstantiator); - - PersistentEntity mockEntity = mock(PersistentEntity.class); - - when(mockEntity.getType()).thenReturn(Person.class); + PersistentEntity entity = this.mappingContext.createPersistentEntity(ClassTypeInformation.from(Person.class)); assertThat(cache.getPdxSerializer()).isInstanceOf(MappingPdxSerializer.class); MappingPdxSerializer serializer = ((MappingPdxSerializer) cache.getPdxSerializer()); try { - serializer.setEntityInstantiators(entityInstantiators); + serializer.setEntityInstantiators(Collections.singletonMap(Person.class, mockEntityInstantiator)); - assertThat(serializer.resolveEntityInstantiator(mockEntity)).isEqualTo(mockEntityInstantiator); + assertThat(serializer.resolveEntityInstantiator(entity)).isEqualTo(mockEntityInstantiator); } finally { serializer.setEntityInstantiators(Collections.emptyMap()); } - verify(mockEntity, atLeast(1)).getType(); verifyNoInteractions(mockEntityInstantiator); } @@ -192,27 +195,21 @@ public class MappingPdxSerializerIntegrationTests { EntityInstantiator mockEntityInstantiator = mock(EntityInstantiator.class); - Map, EntityInstantiator> entityInstantiators = - Collections.singletonMap(Person.class, mockEntityInstantiator); - - PersistentEntity mockEntity = mock(PersistentEntity.class); - - when(mockEntity.getType()).thenReturn(Address.class); + PersistentEntity entity = this.mappingContext.createPersistentEntity(ClassTypeInformation.from(Address.class)); assertThat(cache.getPdxSerializer()).isInstanceOf(MappingPdxSerializer.class); MappingPdxSerializer serializer = ((MappingPdxSerializer) cache.getPdxSerializer()); try { - serializer.setEntityInstantiators(entityInstantiators); + serializer.setEntityInstantiators(Collections.singletonMap(Person.class, mockEntityInstantiator)); - assertThat(serializer.resolveEntityInstantiator(mockEntity)).isNotEqualTo(mockEntityInstantiator); + assertThat(serializer.resolveEntityInstantiator(entity)).isNotEqualTo(mockEntityInstantiator); } finally { serializer.setEntityInstantiators(Collections.emptyMap()); } - verify(mockEntity, atLeast(1)).getType(); verifyNoInteractions(mockEntityInstantiator); }