From 6a9aa51e5525ca7aedb820bdf5273f4a5fec67ac Mon Sep 17 00:00:00 2001 From: Jens Schauder Date: Tue, 13 Oct 2020 13:08:25 +0200 Subject: [PATCH] DATAJDBC-349 - Polishing. Original pull requests: #248, #242. --- .../DefaultDataAccessStrategyUnitTests.java | 93 +++++++------------ 1 file changed, 36 insertions(+), 57 deletions(-) diff --git a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/convert/DefaultDataAccessStrategyUnitTests.java b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/convert/DefaultDataAccessStrategyUnitTests.java index 1da8dae8c..014b39b70 100644 --- a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/convert/DefaultDataAccessStrategyUnitTests.java +++ b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/convert/DefaultDataAccessStrategyUnitTests.java @@ -15,6 +15,8 @@ */ package org.springframework.data.jdbc.core.convert; +import static java.util.Arrays.*; +import static java.util.Collections.*; import static org.assertj.core.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; @@ -23,17 +25,16 @@ import static org.springframework.data.relational.core.sql.SqlIdentifier.*; import lombok.AllArgsConstructor; import lombok.Data; import lombok.RequiredArgsConstructor; +import lombok.Value; import java.util.ArrayList; -import java.util.Arrays; import java.util.HashMap; import java.util.List; -import lombok.Value; +import org.jetbrains.annotations.NotNull; import org.junit.Before; import org.junit.Test; import org.mockito.ArgumentCaptor; - import org.springframework.core.convert.converter.Converter; import org.springframework.data.annotation.Id; import org.springframework.data.convert.ReadingConverter; @@ -96,7 +97,7 @@ public class DefaultDataAccessStrategyUnitTests { additionalParameters.put(SqlIdentifier.quoted("ID"), ID_FROM_ADDITIONAL_VALUES); - accessStrategy.insert(new DummyEntity(ORIGINAL_ID), DummyEntity.class, Identifier.from( additionalParameters)); + accessStrategy.insert(new DummyEntity(ORIGINAL_ID), DummyEntity.class, Identifier.from(additionalParameters)); verify(namedJdbcOperations).update(eq("INSERT INTO \"DUMMY_ENTITY\" (\"ID\") VALUES (:ID)"), paramSourceCaptor.capture(), any(KeyHolder.class)); @@ -122,21 +123,8 @@ public class DefaultDataAccessStrategyUnitTests { @Test // DATAJDBC-235 public void considersConfiguredWriteConverter() { - DelegatingDataAccessStrategy relationResolver = new DelegatingDataAccessStrategy(); - - Dialect dialect = HsqlDbDialect.INSTANCE; - - JdbcConverter converter = new BasicJdbcConverter(context, relationResolver, - new JdbcCustomConversions(Arrays.asList(BooleanToStringConverter.INSTANCE, StringToBooleanConverter.INSTANCE)), - new DefaultJdbcTypeFactory(jdbcOperations), dialect.getIdentifierProcessing()); - - DefaultDataAccessStrategy accessStrategy = new DefaultDataAccessStrategy( // - new SqlGeneratorSource(context, converter, dialect), // - context, // - converter, // - namedJdbcOperations); - - relationResolver.setDelegate(accessStrategy); + DefaultDataAccessStrategy accessStrategy = createAccessStrategyWithConverter( + asList(BooleanToStringConverter.INSTANCE, StringToBooleanConverter.INSTANCE)); ArgumentCaptor sqlCaptor = ArgumentCaptor.forClass(String.class); @@ -153,21 +141,8 @@ public class DefaultDataAccessStrategyUnitTests { @Test // DATAJDBC-412 public void considersConfiguredWriteConverterForIdValueObjects() { - DelegatingDataAccessStrategy relationResolver = new DelegatingDataAccessStrategy(); - - Dialect dialect = HsqlDbDialect.INSTANCE; - - JdbcConverter converter = new BasicJdbcConverter(context, relationResolver, - new JdbcCustomConversions(Arrays.asList(IdValueToStringConverter.INSTANCE)), - new DefaultJdbcTypeFactory(jdbcOperations), dialect.getIdentifierProcessing()); - - DefaultDataAccessStrategy accessStrategy = new DefaultDataAccessStrategy( // - new SqlGeneratorSource(context, converter, dialect), // - context, // - converter, // - namedJdbcOperations); - - relationResolver.setDelegate(accessStrategy); + DefaultDataAccessStrategy accessStrategy = createAccessStrategyWithConverter( + singletonList(IdValueToStringConverter.INSTANCE)); String rawId = "batman"; @@ -187,24 +162,11 @@ public class DefaultDataAccessStrategyUnitTests { assertThat(paramSourceCaptor.getValue().getValue("id")).isEqualTo(rawId); } - @Test // DATAJDBC-587 + @Test // DATAJDBC-349 public void considersConfiguredWriteConverterForIdValueObjectsWhichReferencedInOneToManyRelationship() { - DelegatingDataAccessStrategy relationResolver = new DelegatingDataAccessStrategy(); - - Dialect dialect = HsqlDbDialect.INSTANCE; - - JdbcConverter converter = new BasicJdbcConverter(context, relationResolver, - new JdbcCustomConversions(Arrays.asList(IdValueToStringConverter.INSTANCE)), - new DefaultJdbcTypeFactory(jdbcOperations), dialect.getIdentifierProcessing()); - - DefaultDataAccessStrategy accessStrategy = new DefaultDataAccessStrategy( // - new SqlGeneratorSource(context, converter, dialect), // - context, // - converter, // - namedJdbcOperations); - - relationResolver.setDelegate(accessStrategy); + DefaultDataAccessStrategy accessStrategy = createAccessStrategyWithConverter( + singletonList(IdValueToStringConverter.INSTANCE)); String rawId = "batman"; IdValue rootIdValue = new IdValue(rawId); @@ -216,29 +178,46 @@ public class DefaultDataAccessStrategyUnitTests { additionalParameters.put(SqlIdentifier.quoted("DUMMYENTITYROOT"), rootIdValue); accessStrategy.insert(root, DummyEntityRoot.class, Identifier.from(additionalParameters)); - verify(namedJdbcOperations).update(anyString(), paramSourceCaptor.capture(), - any(KeyHolder.class)); + verify(namedJdbcOperations).update(anyString(), paramSourceCaptor.capture(), any(KeyHolder.class)); assertThat(paramSourceCaptor.getValue().getValue("id")).isEqualTo(rawId); - PersistentPropertyPath path = - context.getPersistentPropertyPath("dummyEntities", DummyEntityRoot.class); + PersistentPropertyPath path = context.getPersistentPropertyPath("dummyEntities", + DummyEntityRoot.class); accessStrategy.findAllByPath(Identifier.from(additionalParameters), path); - verify(namedJdbcOperations).query(anyString(), paramSourceCaptor.capture(), - any(RowMapper.class)); + verify(namedJdbcOperations).query(anyString(), paramSourceCaptor.capture(), any(RowMapper.class)); assertThat(paramSourceCaptor.getValue().getValue("DUMMYENTITYROOT")).isEqualTo(rawId); } + @NotNull + private DefaultDataAccessStrategy createAccessStrategyWithConverter(List converters) { + DelegatingDataAccessStrategy relationResolver = new DelegatingDataAccessStrategy(); + + Dialect dialect = HsqlDbDialect.INSTANCE; + + JdbcConverter converter = new BasicJdbcConverter(context, relationResolver, new JdbcCustomConversions(converters), + new DefaultJdbcTypeFactory(jdbcOperations), dialect.getIdentifierProcessing()); + + DefaultDataAccessStrategy accessStrategy = new DefaultDataAccessStrategy( // + new SqlGeneratorSource(context, converter, dialect), // + context, // + converter, // + namedJdbcOperations); + + relationResolver.setDelegate(accessStrategy); + return accessStrategy; + } + @RequiredArgsConstructor private static class DummyEntity { @Id private final Long id; } - @RequiredArgsConstructor // DATAJDBC-587 + @RequiredArgsConstructor // DATAJDBC-349 private static class DummyEntityRoot { @Id private final IdValue id;