aboutsummaryrefslogtreecommitdiff
path: root/src/test/scala/xyz/driver/core/JsonTest.scala
diff options
context:
space:
mode:
authorVlad Uspensky <v.uspenskiy@icloud.com>2017-10-20 14:38:42 -0700
committerGitHub <noreply@github.com>2017-10-20 14:38:42 -0700
commit0cb06d70bd91e1e6a4ab9d97851ef9db7aaedfd6 (patch)
treedd0d66174b6294251570ce24e8bd7b864beb561a /src/test/scala/xyz/driver/core/JsonTest.scala
parentfa6716e0a3223fa0b15966f6bdfe5464e26d8fc2 (diff)
parentba2c214d2f8f9a1ba6d8265c55476a5281b8fd22 (diff)
downloaddriver-core-0cb06d70bd91e1e6a4ab9d97851ef9db7aaedfd6.tar.gz
driver-core-0cb06d70bd91e1e6a4ab9d97851ef9db7aaedfd6.tar.bz2
driver-core-0cb06d70bd91e1e6a4ab9d97851ef9db7aaedfd6.zip
Merge pull request #76 from drivergroup/refinedv1.5.1
[RFC] Using "Refined" library (https://github.com/fthomas/refined) to…
Diffstat (limited to 'src/test/scala/xyz/driver/core/JsonTest.scala')
-rw-r--r--src/test/scala/xyz/driver/core/JsonTest.scala32
1 files changed, 31 insertions, 1 deletions
diff --git a/src/test/scala/xyz/driver/core/JsonTest.scala b/src/test/scala/xyz/driver/core/JsonTest.scala
index bcf0ecf..26e3796 100644
--- a/src/test/scala/xyz/driver/core/JsonTest.scala
+++ b/src/test/scala/xyz/driver/core/JsonTest.scala
@@ -1,13 +1,17 @@
package xyz.driver.core
+import eu.timepit.refined.collection.NonEmpty
+import eu.timepit.refined.numeric.Positive
+import eu.timepit.refined.refineMV
import org.scalatest.{FlatSpec, Matchers}
-import xyz.driver.core.json.{EnumJsonFormat, GadtJsonFormat, ValueClassFormat}
+import xyz.driver.core.json._
import xyz.driver.core.time.provider.SystemTimeProvider
import spray.json._
import xyz.driver.core.TestTypes.CustomGADT
import xyz.driver.core.domain.{Email, PhoneNumber}
class JsonTest extends FlatSpec with Matchers {
+ import DefaultJsonProtocol._
"Json format for Id" should "read and write correct JSON" in {
@@ -31,6 +35,19 @@ class JsonTest extends FlatSpec with Matchers {
parsedName should be(referenceName)
}
+ "Json format for NonEmptyName" should "read and write correct JSON" in {
+
+ val jsonFormat = json.nonEmptyNameFormat[String]
+
+ val referenceNonEmptyName = NonEmptyName[String](refineMV[NonEmpty]("Homer"))
+
+ val writtenJson = jsonFormat.write(referenceNonEmptyName)
+ writtenJson.prettyPrint should be("\"Homer\"")
+
+ val parsedNonEmptyName = jsonFormat.read(writtenJson)
+ parsedNonEmptyName should be(referenceNonEmptyName)
+ }
+
"Json format for Time" should "read and write correct JSON" in {
val referenceTime = new SystemTimeProvider().currentTime()
@@ -168,4 +185,17 @@ class JsonTest extends FlatSpec with Matchers {
parsedValue1 should be(referenceValue1)
parsedValue2 should be(referenceValue2)
}
+
+ "Json format for a Refined value" should "read and write correct JSON" in {
+
+ val jsonFormat = json.refinedJsonFormat[Int, Positive]
+
+ val referenceRefinedNumber = refineMV[Positive](42)
+
+ val writtenJson = jsonFormat.write(referenceRefinedNumber)
+ writtenJson should be("42".parseJson)
+
+ val parsedRefinedNumber = jsonFormat.read(writtenJson)
+ parsedRefinedNumber should be(referenceRefinedNumber)
+ }
}