aboutsummaryrefslogtreecommitdiff
path: root/shared/src/test/scala/OptionFieldTests.scala
diff options
context:
space:
mode:
authorJakob Odersky <jakob@driver.xyz>2018-06-29 17:56:06 -0700
committerJakob Odersky <jakob@odersky.com>2018-07-02 16:28:46 -0700
commitc5c1aa6bc78b6ebc346befe9f4b434401a683a59 (patch)
treefd5a92d7b89825d68496306d81dc7ebd2b2f1981 /shared/src/test/scala/OptionFieldTests.scala
parent1c358416737f8e7d41d6858000ce07680df7afee (diff)
downloadspray-json-derivation-c5c1aa6bc78b6ebc346befe9f4b434401a683a59.tar.gz
spray-json-derivation-c5c1aa6bc78b6ebc346befe9f4b434401a683a59.tar.bz2
spray-json-derivation-c5c1aa6bc78b6ebc346befe9f4b434401a683a59.zip
Make inclusion of None values as null optional
Diffstat (limited to 'shared/src/test/scala/OptionFieldTests.scala')
-rw-r--r--shared/src/test/scala/OptionFieldTests.scala53
1 files changed, 53 insertions, 0 deletions
diff --git a/shared/src/test/scala/OptionFieldTests.scala b/shared/src/test/scala/OptionFieldTests.scala
new file mode 100644
index 0000000..8cabf25
--- /dev/null
+++ b/shared/src/test/scala/OptionFieldTests.scala
@@ -0,0 +1,53 @@
+package spray.json
+
+import org.scalatest._
+
+class OptionFieldTests
+ extends FlatSpec
+ with FormatTests {
+
+ case class Opt(x: Option[Int])
+
+ object HideNull extends DerivedJsonProtocol {
+ override def printNull = false
+ implicit val optFmt = jsonFormat[Opt]
+ }
+
+ object ShowNull extends DerivedJsonProtocol {
+ override def printNull = true
+ implicit val optFmt = jsonFormat[Opt]
+ }
+
+
+ "Option fields with some value" should behave like checkRoundtrip(
+ Opt(Some(2)),
+ """{"x":2}"""
+ )(HideNull.optFmt)
+
+ "Option fields with some value (show null)" should behave like checkRoundtrip(
+ Opt(Some(2)),
+ """{"x":2}"""
+ )(ShowNull.optFmt)
+
+ "Option fields with null value" should behave like checkRoundtrip(
+ Opt(None),
+ """{}"""
+ )(HideNull.optFmt)
+
+ "Option fields with null value (show null)" should behave like checkRoundtrip(
+ Opt(None),
+ """{"x":null}"""
+ )(ShowNull.optFmt)
+
+ "Option fields with undefined value" should "deserialize" in {
+ import HideNull._
+ assert("{}".parseJson.convertTo[Opt] == Opt(None))
+ }
+
+ "Option fields with undefined value (show null)" should "deserialize" in {
+ import ShowNull._
+ assert("{}".parseJson.convertTo[Opt] == Opt(None))
+ }
+
+}
+