Skip to content

Commit 627ffe2

Browse files
author
Donovan Levinson
committed
Added tests to format value classes
1 parent 51bd5d6 commit 627ffe2

1 file changed

Lines changed: 16 additions & 0 deletions

File tree

play-json/shared/src/test/scala/play/api/libs/json/JsonExtensionSpec.scala

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,8 @@ object CustomApply {
115115

116116
case class Optional(props: Option[String])
117117

118+
case class UserId(id: Long) extends AnyVal
119+
118120
class 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
}

0 commit comments

Comments
 (0)