|
3 | 3 | import it.aboutbits.springboot.toolbox.persistence.transformer.impl.jpa.QueryTransformerTestModel; |
4 | 4 | import it.aboutbits.springboot.toolbox.persistence.transformer.impl.jpa.QueryTransformerTestModelRepository; |
5 | 5 | import it.aboutbits.springboot.toolbox.support.ApplicationTest; |
| 6 | +import it.aboutbits.springboot.toolbox.type.ScaledBigDecimal; |
6 | 7 | import jakarta.persistence.EntityManager; |
7 | 8 | import jakarta.persistence.EntityNotFoundException; |
8 | 9 | import org.junit.jupiter.api.Nested; |
@@ -52,6 +53,24 @@ void givenQueryWithOneResult_shouldPass() { |
52 | 53 | assertThat(result.get().testModel.getName()).isEqualTo("abc"); |
53 | 54 | } |
54 | 55 |
|
| 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 | + |
55 | 74 | @Test |
56 | 75 | void givenQueryWithMultipleResults_shouldFail() { |
57 | 76 | createTestModel("A"); |
@@ -252,10 +271,15 @@ protected record WrongContainer( |
252 | 271 | ) { |
253 | 272 | } |
254 | 273 |
|
255 | | - private QueryTransformerTestModel createTestModel(String name) { |
| 274 | + private QueryTransformerTestModel createTestModel(String name, String email, ScaledBigDecimal scaledBigDecimal) { |
256 | 275 | var item = new QueryTransformerTestModel(); |
257 | 276 | item.setName(name); |
258 | | - item.setEmail(null); |
| 277 | + item.setEmail(email); |
| 278 | + item.setScaledBigDecimalValue(scaledBigDecimal); |
259 | 279 | return repository.save(item); |
260 | 280 | } |
| 281 | + |
| 282 | + private QueryTransformerTestModel createTestModel(String name) { |
| 283 | + return createTestModel(name, null, ScaledBigDecimal.ZERO); |
| 284 | + } |
261 | 285 | } |
0 commit comments