Browse Source

DATAJDBC-349 - Polishing.

Original pull requests: #248, #242.
pull/211/head
Jens Schauder 5 years ago
parent
commit
6a9aa51e55
No known key found for this signature in database
GPG Key ID: 996B1389BA0721C3
  1. 93
      spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/convert/DefaultDataAccessStrategyUnitTests.java

93
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; 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.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*; import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*; import static org.mockito.Mockito.*;
@ -23,17 +25,16 @@ import static org.springframework.data.relational.core.sql.SqlIdentifier.*;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.Value;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import lombok.Value; import org.jetbrains.annotations.NotNull;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor;
import org.springframework.core.convert.converter.Converter; import org.springframework.core.convert.converter.Converter;
import org.springframework.data.annotation.Id; import org.springframework.data.annotation.Id;
import org.springframework.data.convert.ReadingConverter; import org.springframework.data.convert.ReadingConverter;
@ -96,7 +97,7 @@ public class DefaultDataAccessStrategyUnitTests {
additionalParameters.put(SqlIdentifier.quoted("ID"), ID_FROM_ADDITIONAL_VALUES); 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)"), verify(namedJdbcOperations).update(eq("INSERT INTO \"DUMMY_ENTITY\" (\"ID\") VALUES (:ID)"),
paramSourceCaptor.capture(), any(KeyHolder.class)); paramSourceCaptor.capture(), any(KeyHolder.class));
@ -122,21 +123,8 @@ public class DefaultDataAccessStrategyUnitTests {
@Test // DATAJDBC-235 @Test // DATAJDBC-235
public void considersConfiguredWriteConverter() { public void considersConfiguredWriteConverter() {
DelegatingDataAccessStrategy relationResolver = new DelegatingDataAccessStrategy(); DefaultDataAccessStrategy accessStrategy = createAccessStrategyWithConverter(
asList(BooleanToStringConverter.INSTANCE, StringToBooleanConverter.INSTANCE));
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);
ArgumentCaptor<String> sqlCaptor = ArgumentCaptor.forClass(String.class); ArgumentCaptor<String> sqlCaptor = ArgumentCaptor.forClass(String.class);
@ -153,21 +141,8 @@ public class DefaultDataAccessStrategyUnitTests {
@Test // DATAJDBC-412 @Test // DATAJDBC-412
public void considersConfiguredWriteConverterForIdValueObjects() { public void considersConfiguredWriteConverterForIdValueObjects() {
DelegatingDataAccessStrategy relationResolver = new DelegatingDataAccessStrategy(); DefaultDataAccessStrategy accessStrategy = createAccessStrategyWithConverter(
singletonList(IdValueToStringConverter.INSTANCE));
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);
String rawId = "batman"; String rawId = "batman";
@ -187,24 +162,11 @@ public class DefaultDataAccessStrategyUnitTests {
assertThat(paramSourceCaptor.getValue().getValue("id")).isEqualTo(rawId); assertThat(paramSourceCaptor.getValue().getValue("id")).isEqualTo(rawId);
} }
@Test // DATAJDBC-587 @Test // DATAJDBC-349
public void considersConfiguredWriteConverterForIdValueObjectsWhichReferencedInOneToManyRelationship() { public void considersConfiguredWriteConverterForIdValueObjectsWhichReferencedInOneToManyRelationship() {
DelegatingDataAccessStrategy relationResolver = new DelegatingDataAccessStrategy(); DefaultDataAccessStrategy accessStrategy = createAccessStrategyWithConverter(
singletonList(IdValueToStringConverter.INSTANCE));
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);
String rawId = "batman"; String rawId = "batman";
IdValue rootIdValue = new IdValue(rawId); IdValue rootIdValue = new IdValue(rawId);
@ -216,29 +178,46 @@ public class DefaultDataAccessStrategyUnitTests {
additionalParameters.put(SqlIdentifier.quoted("DUMMYENTITYROOT"), rootIdValue); additionalParameters.put(SqlIdentifier.quoted("DUMMYENTITYROOT"), rootIdValue);
accessStrategy.insert(root, DummyEntityRoot.class, Identifier.from(additionalParameters)); accessStrategy.insert(root, DummyEntityRoot.class, Identifier.from(additionalParameters));
verify(namedJdbcOperations).update(anyString(), paramSourceCaptor.capture(), verify(namedJdbcOperations).update(anyString(), paramSourceCaptor.capture(), any(KeyHolder.class));
any(KeyHolder.class));
assertThat(paramSourceCaptor.getValue().getValue("id")).isEqualTo(rawId); assertThat(paramSourceCaptor.getValue().getValue("id")).isEqualTo(rawId);
PersistentPropertyPath<RelationalPersistentProperty> path = PersistentPropertyPath<RelationalPersistentProperty> path = context.getPersistentPropertyPath("dummyEntities",
context.getPersistentPropertyPath("dummyEntities", DummyEntityRoot.class); DummyEntityRoot.class);
accessStrategy.findAllByPath(Identifier.from(additionalParameters), path); accessStrategy.findAllByPath(Identifier.from(additionalParameters), path);
verify(namedJdbcOperations).query(anyString(), paramSourceCaptor.capture(), verify(namedJdbcOperations).query(anyString(), paramSourceCaptor.capture(), any(RowMapper.class));
any(RowMapper.class));
assertThat(paramSourceCaptor.getValue().getValue("DUMMYENTITYROOT")).isEqualTo(rawId); 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 @RequiredArgsConstructor
private static class DummyEntity { private static class DummyEntity {
@Id private final Long id; @Id private final Long id;
} }
@RequiredArgsConstructor // DATAJDBC-587 @RequiredArgsConstructor // DATAJDBC-349
private static class DummyEntityRoot { private static class DummyEntityRoot {
@Id private final IdValue id; @Id private final IdValue id;

Loading…
Cancel
Save