@@ -12,6 +12,10 @@ package dev.krud.shapeshift.builder
12
12
13
13
import dev.krud.shapeshift.MappingStrategy
14
14
import dev.krud.shapeshift.ShapeShiftBuilder
15
+ import dev.krud.shapeshift.condition.MappingCondition
16
+ import dev.krud.shapeshift.condition.MappingConditionContext
17
+ import dev.krud.shapeshift.transformer.base.MappingTransformer
18
+ import dev.krud.shapeshift.transformer.base.MappingTransformerContext
15
19
import org.junit.jupiter.api.Test
16
20
import strikt.api.expectThat
17
21
import strikt.assertions.isEqualTo
@@ -59,6 +63,25 @@ class MappingDefinitionBuilderTests {
59
63
.isNull()
60
64
}
61
65
66
+ @Test
67
+ internal fun `test mapping with condition reference` () {
68
+ val shapeShift = ShapeShiftBuilder ()
69
+ .excludeDefaultTransformers()
70
+ .withMapping(
71
+ MappingDefinitionBuilder (From ::class .java, To ::class .java)
72
+ .mapField(" name" , " name" )
73
+ .mapField(" age" , " age" ).withCondition(Above31Condition ::class .java)
74
+ .build()
75
+ )
76
+ .build()
77
+ val original = From ()
78
+ val result = shapeShift.map<From , To >(original)
79
+ expectThat(result.name)
80
+ .isEqualTo(original.name)
81
+ expectThat(result.age)
82
+ .isNull()
83
+ }
84
+
62
85
@Test
63
86
internal fun `test mapping with transformer` () {
64
87
val shapeShift = ShapeShiftBuilder ()
@@ -75,6 +98,23 @@ class MappingDefinitionBuilderTests {
75
98
.isEqualTo(original.age + 1 )
76
99
}
77
100
101
+ @Test
102
+ internal fun `test mapping with transformer reference` () {
103
+ val shapeShift = ShapeShiftBuilder ()
104
+ .excludeDefaultTransformers()
105
+ .withTransformer(AddOneTransformer ())
106
+ .withMapping(
107
+ MappingDefinitionBuilder (From ::class .java, To ::class .java)
108
+ .mapField(" age" , " age" ).withTransformer(AddOneTransformer ::class .java)
109
+ .build()
110
+ )
111
+ .build()
112
+ val original = From ()
113
+ val result = shapeShift.map<From , To >(original)
114
+ expectThat(result.age)
115
+ .isEqualTo(original.age + 1 )
116
+ }
117
+
78
118
@Test
79
119
internal fun `test mapping with override mapping strategy` () {
80
120
val shapeShift = ShapeShiftBuilder ()
@@ -109,4 +149,16 @@ class To(
109
149
var age : Int? = null ,
110
150
var city : String? = null ,
111
151
val profession : String? = " placeholder"
112
- )
152
+ )
153
+
154
+ class AddOneTransformer : MappingTransformer <Int , Int > {
155
+ override fun transform (context : MappingTransformerContext <out Int >): Int {
156
+ return (context.originalValue as Int ) + 1
157
+ }
158
+ }
159
+
160
+ class Above31Condition : MappingCondition <Int > {
161
+ override fun isValid (context : MappingConditionContext <Int >): Boolean {
162
+ return context.originalValue != null && context.originalValue as Int > 31
163
+ }
164
+ }
0 commit comments