diff options
author | vlad <vlad@driver.xyz> | 2017-10-20 14:17:05 -0700 |
---|---|---|
committer | vlad <vlad@driver.xyz> | 2017-10-20 14:17:05 -0700 |
commit | fc2f37b4a3c22747d0e913a2b7a379dbe7e9e7d1 (patch) | |
tree | 392385b9ad5d15160fd45453f34f68d389633fc2 /src/test/scala/xyz/driver/core/JsonTest.scala | |
parent | c13a90f7dc6565e0beddcc6a61609d4e131f55ba (diff) | |
download | driver-core-fc2f37b4a3c22747d0e913a2b7a379dbe7e9e7d1.tar.gz driver-core-fc2f37b4a3c22747d0e913a2b7a379dbe7e9e7d1.tar.bz2 driver-core-fc2f37b4a3c22747d0e913a2b7a379dbe7e9e7d1.zip |
Slick support for any Refined types, JSON format and generator for NonEmptyName, Unit-tests
Diffstat (limited to 'src/test/scala/xyz/driver/core/JsonTest.scala')
-rw-r--r-- | src/test/scala/xyz/driver/core/JsonTest.scala | 32 |
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) + } } |