File tree Expand file tree Collapse file tree
play-json/shared/src/test/scala/play/api/libs/json Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -115,6 +115,8 @@ object CustomApply {
115115
116116case class Optional (props : Option [String ])
117117
118+ case class UserId (id : Long ) extends AnyVal
119+
118120class JsonExtensionSpec extends AnyWordSpec with Matchers {
119121 " JsonExtension" should {
120122 " create a reads[User]" in {
@@ -749,5 +751,19 @@ class JsonExtensionSpec extends AnyWordSpec with Matchers {
749751 formatter.reads(Json .obj(" props" -> JsNull )).mustEqual(JsSuccess (Optional (None )))
750752 formatter.reads(Json .obj(" props" -> Some (" foo" ))).mustEqual(JsSuccess (Optional (Some (" foo" ))))
751753 }
754+ " format value classes" in {
755+ implicit val userIdFmt : Format [UserId ] = Json .format[UserId ]
756+ val userId = UserId (12345 )
757+ val serialized = Json .stringify(Json .toJson(userId))
758+ serialized.mustEqual(""" {"id":12345}""" )
759+ Json .fromJson[UserId ](Json .parse(serialized)).mustEqual(JsSuccess (userId))
760+ }
761+ " format value classes with value format" in {
762+ implicit val userIdFmt : Format [UserId ] = Json .valueFormat[UserId ]
763+ val userId = UserId (12345 )
764+ val serialized = Json .stringify(Json .toJson(userId))
765+ serialized.mustEqual(""" 12345""" )
766+ Json .fromJson[UserId ](Json .parse(serialized)).mustEqual(JsSuccess (userId))
767+ }
752768 }
753769}
You can’t perform that action at this time.
0 commit comments