Skip to content

Commit c6eca49

Browse files
committed
add custom java type test
1 parent 06d09c1 commit c6eca49

2 files changed

Lines changed: 30 additions & 4 deletions

File tree

src/test/java/it/aboutbits/springboot/toolbox/persistence/transformer/QueryTransformerTest.java

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import it.aboutbits.springboot.toolbox.persistence.transformer.impl.jpa.QueryTransformerTestModel;
44
import it.aboutbits.springboot.toolbox.persistence.transformer.impl.jpa.QueryTransformerTestModelRepository;
55
import it.aboutbits.springboot.toolbox.support.ApplicationTest;
6+
import it.aboutbits.springboot.toolbox.type.ScaledBigDecimal;
67
import jakarta.persistence.EntityManager;
78
import jakarta.persistence.EntityNotFoundException;
89
import org.junit.jupiter.api.Nested;
@@ -52,6 +53,24 @@ void givenQueryWithOneResult_shouldPass() {
5253
assertThat(result.get().testModel.getName()).isEqualTo("abc");
5354
}
5455

56+
@Test
57+
void givenQueryWithOneResult_customJavaType_shouldPass() {
58+
var testModel = createTestModel("abc", "info@aboutbits.it", ScaledBigDecimal.valueOf(3.14));
59+
60+
var query = entityManager.createQuery("select q, 'xxx' from QueryTransformerTestModel q");
61+
62+
var result = QueryTransformer
63+
.of(entityManager, TestModelContainer.class)
64+
.withQuery(query)
65+
.asSingleResult();
66+
67+
assertThat(result).isPresent();
68+
assertThat(result.get().someText).isEqualTo("xxx");
69+
assertThat(result.get().testModel.getName()).isEqualTo(testModel.getName());
70+
assertThat(result.get().testModel.getEmail()).isEqualTo(testModel.getEmail());
71+
assertThat(result.get().testModel.getScaledBigDecimalValue()).isEqualByComparingTo(testModel.getScaledBigDecimalValue());
72+
}
73+
5574
@Test
5675
void givenQueryWithMultipleResults_shouldFail() {
5776
createTestModel("A");
@@ -252,10 +271,15 @@ protected record WrongContainer(
252271
) {
253272
}
254273

255-
private QueryTransformerTestModel createTestModel(String name) {
274+
private QueryTransformerTestModel createTestModel(String name, String email, ScaledBigDecimal scaledBigDecimal) {
256275
var item = new QueryTransformerTestModel();
257276
item.setName(name);
258-
item.setEmail(null);
277+
item.setEmail(email);
278+
item.setScaledBigDecimalValue(scaledBigDecimal);
259279
return repository.save(item);
260280
}
281+
282+
private QueryTransformerTestModel createTestModel(String name) {
283+
return createTestModel(name, null, ScaledBigDecimal.ZERO);
284+
}
261285
}

src/test/java/it/aboutbits/springboot/toolbox/persistence/transformer/impl/jpa/QueryTransformerTestModel.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package it.aboutbits.springboot.toolbox.persistence.transformer.impl.jpa;
22

33
import it.aboutbits.springboot.toolbox.autoconfiguration.persistence.AutoRegisteredJavaType;
4+
import it.aboutbits.springboot.toolbox.persistence.javatype.ScaledBigDecimalJavaType;
45
import it.aboutbits.springboot.toolbox.persistence.javatype.base.WrappedLongJavaType;
56
import it.aboutbits.springboot.toolbox.persistence.javatype.impl.javatype.WrapScaledBigDecimalJavaType;
67
import it.aboutbits.springboot.toolbox.persistence.javatype.impl.type.WrapScaledBigDecimal;
8+
import it.aboutbits.springboot.toolbox.type.ScaledBigDecimal;
79
import it.aboutbits.springboot.toolbox.type.identity.EntityId;
810
import it.aboutbits.springboot.toolbox.type.identity.Identified;
911
import jakarta.persistence.Entity;
@@ -36,8 +38,8 @@ public class QueryTransformerTestModel implements Identified<QueryTransformerTes
3638
private String email;
3739

3840
@SuppressWarnings("JpaAttributeTypeInspection")
39-
@JavaType(WrapScaledBigDecimalJavaType.class)
40-
private WrapScaledBigDecimal scaledBigDecimalValue;
41+
@JavaType(ScaledBigDecimalJavaType.class)
42+
private ScaledBigDecimal scaledBigDecimalValue;
4143

4244
public record ID(
4345
Long value

0 commit comments

Comments
 (0)