Browse Source

DATAJDBC-349 - Adds a unit test for the changes.

Original pull request: #242.
pull/211/head
Myat Min 6 years ago committed by Jens Schauder
parent
commit
e26f6647da
No known key found for this signature in database
GPG Key ID: 996B1389BA0721C3
  1. 58
      spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/convert/DefaultDataAccessStrategyUnitTests.java

58
spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/convert/DefaultDataAccessStrategyUnitTests.java

@ -24,8 +24,10 @@ import lombok.AllArgsConstructor; @@ -24,8 +24,10 @@ import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import lombok.Value;
import org.junit.Before;
@ -37,11 +39,14 @@ import org.springframework.data.annotation.Id; @@ -37,11 +39,14 @@ import org.springframework.data.annotation.Id;
import org.springframework.data.convert.ReadingConverter;
import org.springframework.data.convert.WritingConverter;
import org.springframework.data.jdbc.core.mapping.JdbcMappingContext;
import org.springframework.data.mapping.PersistentPropertyPath;
import org.springframework.data.relational.core.dialect.Dialect;
import org.springframework.data.relational.core.dialect.HsqlDbDialect;
import org.springframework.data.relational.core.mapping.RelationalMappingContext;
import org.springframework.data.relational.core.mapping.RelationalPersistentProperty;
import org.springframework.data.relational.core.sql.SqlIdentifier;
import org.springframework.jdbc.core.JdbcOperations;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcOperations;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.jdbc.support.KeyHolder;
@ -52,6 +57,7 @@ import org.springframework.jdbc.support.KeyHolder; @@ -52,6 +57,7 @@ import org.springframework.jdbc.support.KeyHolder;
* @author Jens Schauder
* @author Mark Paluch
* @author Myeonghyeon Lee
* @author Myat Min
*/
public class DefaultDataAccessStrategyUnitTests {
@ -181,12 +187,64 @@ public class DefaultDataAccessStrategyUnitTests { @@ -181,12 +187,64 @@ public class DefaultDataAccessStrategyUnitTests {
assertThat(paramSourceCaptor.getValue().getValue("id")).isEqualTo(rawId);
}
@Test // DATAJDBC-587
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);
String rawId = "batman";
IdValue rootIdValue = new IdValue(rawId);
DummyEntityRoot root = new DummyEntityRoot(rootIdValue);
DummyEntity child = new DummyEntity(ORIGINAL_ID);
root.dummyEntities.add(child);
additionalParameters.put(SqlIdentifier.quoted("DUMMYENTITYROOT"), rootIdValue);
accessStrategy.insert(root, DummyEntityRoot.class, Identifier.from(additionalParameters));
verify(namedJdbcOperations).update(anyString(), paramSourceCaptor.capture(),
any(KeyHolder.class));
assertThat(paramSourceCaptor.getValue().getValue("id")).isEqualTo(rawId);
PersistentPropertyPath<RelationalPersistentProperty> path =
context.getPersistentPropertyPath("dummyEntities", DummyEntityRoot.class);
accessStrategy.findAllByPath(Identifier.from(additionalParameters), path);
verify(namedJdbcOperations).query(anyString(), paramSourceCaptor.capture(),
any(RowMapper.class));
assertThat(paramSourceCaptor.getValue().getValue("DUMMYENTITYROOT")).isEqualTo(rawId);
}
@RequiredArgsConstructor
private static class DummyEntity {
@Id private final Long id;
}
@RequiredArgsConstructor // DATAJDBC-587
private static class DummyEntityRoot {
@Id private final IdValue id;
List<DummyEntity> dummyEntities = new ArrayList<>();
}
@AllArgsConstructor
private static class EntityWithBoolean {

Loading…
Cancel
Save