File tree 3 files changed +15
-10
lines changed
main/scala/fluent/internal
3 files changed +15
-10
lines changed Original file line number Diff line number Diff line change 1
- sbt.version =1.0.4
1
+ sbt.version =1.0.4
Original file line number Diff line number Diff line change @@ -109,6 +109,12 @@ trait ImplicitTransformersPriority3 extends ImplicitTransformersPriority2 {
109
109
// There is no instance of CNil, so this won't be used
110
110
Left (TransformError (" Can't transform into CNil" ))
111
111
}
112
+
113
+ implicit def optionExtractorTransformer [A , B ](implicit
114
+ transform : Transformer [A , B ]
115
+ ): Transformer [Option [A ], B ] = instance { a : Option [A ] =>
116
+ a.map(transform.apply) getOrElse Left (TransformError (" Missing required field" ))
117
+ }
112
118
}
113
119
114
120
trait ImplicitTransformersPriority4 extends ImplicitTransformersPriority3 {
@@ -192,12 +198,6 @@ trait ImplicitTransformersPriority4 extends ImplicitTransformersPriority3 {
192
198
}
193
199
194
200
trait ImplicitTransformersPriority5 extends ImplicitTransformersPriority4 {
195
- implicit def optionExtractorTransformer [A , B ](implicit
196
- transform : Transformer [A , B ]
197
- ): Transformer [Option [A ], B ] = instance { a : Option [A ] =>
198
- a.map(transform.apply) getOrElse Left (TransformError (" Missing required field" ))
199
- }
200
-
201
201
implicit def extractorTransformer [A , B ](implicit
202
202
generic : Generic .Aux [A , B :: HNil ]
203
203
): Transformer [A , B ] = instance { a : A =>
Original file line number Diff line number Diff line change @@ -44,13 +44,18 @@ class FluentSpec extends WordSpecLike with Matchers {
44
44
radius = 3.0 ,
45
45
color = Some (Internal .Color .Red )
46
46
)
47
- " translate External.Circle transformTo Internal.Circle" in {
47
+ " tranform External.Circle into Internal.Circle" in {
48
48
externalCircle.changeTo[Internal .Circle ] shouldBe Right (internalCircle)
49
49
}
50
- " translate Internal.Circle transformTo External.Circle" in {
50
+ " transform Internal.Circle into External.Circle" in {
51
51
internalCircle.changeTo[External .Circle ] shouldBe Right (externalCircle)
52
52
}
53
-
53
+ " transform Option[Internal.Circle] into Option[External.Circle]" in {
54
+ import cats .instances .either ._
55
+ import cats .instances .option ._
56
+ Option (internalCircle).changeTo[Option [External .Circle ]] shouldBe Right (Some (externalCircle))
57
+ (None : Option [Internal .Circle ]).changeTo[Option [External .Circle ]] shouldBe Right (None )
58
+ }
54
59
val externalPost = External .Post (
55
60
author = " Misty" ,
56
61
body = " #Fluent is a cool library to implement your #DDD #translationLayer seamlessly" ,
You can’t perform that action at this time.
0 commit comments