From 7f50c92477a3554e1dc6793d7c64773c178db637 Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Thu, 9 May 2019 11:03:02 +0200 Subject: [PATCH] DATAJDBC-370 - Polishing. Re add wither method and add explicit test for immutable value. Original Pull Request: #151 --- .../convert/EntityRowMapperUnitTests.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/convert/EntityRowMapperUnitTests.java b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/convert/EntityRowMapperUnitTests.java index a8c43e83..0e6447a4 100644 --- a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/convert/EntityRowMapperUnitTests.java +++ b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/convert/EntityRowMapperUnitTests.java @@ -23,6 +23,7 @@ import static org.mockito.Mockito.*; import lombok.AllArgsConstructor; import lombok.RequiredArgsConstructor; +import lombok.Value; import lombok.experimental.Wither; import java.sql.ResultSet; @@ -60,6 +61,7 @@ import org.springframework.util.Assert; * @author Mark Paluch * @author Maciej Walkowiak * @author Bastian Wilhelm + * @author Christoph Strobl */ public class EntityRowMapperUnitTests { @@ -284,8 +286,24 @@ public class EntityRowMapperUnitTests { fixture.assertOn(extracted); } + @Test // DATAJDBC-370 + public void simpleImmutableEmbeddedGetsProperlyExtracted() throws SQLException { + + ResultSet rs = mockResultSet(asList("id", "value"), // + ID_FOR_ENTITY_NOT_REFERENCING_MAP, "ru'Ha'"); + rs.next(); + + WithImmutableValue extracted = createRowMapper(WithImmutableValue.class).mapRow(rs, 1); + + assertThat(extracted) // + .isNotNull() // + .extracting(e -> e.id, e -> e.embeddedImmutableValue) // + .containsExactly(ID_FOR_ENTITY_NOT_REFERENCING_MAP, new ImmutableValue("ru'Ha'")); + } + // Model classes to be used in tests + @Wither @RequiredArgsConstructor static class TrivialImmutable { @@ -306,6 +324,7 @@ public class EntityRowMapperUnitTests { Trivial child; } + @Wither @RequiredArgsConstructor static class OneToOneImmutable { @@ -407,6 +426,17 @@ public class EntityRowMapperUnitTests { NoIdChain3 chain3; } + static class WithImmutableValue { + + @Id Long id; + @Embedded ImmutableValue embeddedImmutableValue; + } + + @Value + static class ImmutableValue { + Object value; + } + // Infrastructure for assertions and constructing mocks private FixtureBuilder buildFixture() {