aboutsummaryrefslogtreecommitdiff
path: root/src/test/scala/xyz/driver/core/JsonTest.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/scala/xyz/driver/core/JsonTest.scala')
-rw-r--r--src/test/scala/xyz/driver/core/JsonTest.scala34
1 files changed, 32 insertions, 2 deletions
diff --git a/src/test/scala/xyz/driver/core/JsonTest.scala b/src/test/scala/xyz/driver/core/JsonTest.scala
index 2c85560..330f6ed 100644
--- a/src/test/scala/xyz/driver/core/JsonTest.scala
+++ b/src/test/scala/xyz/driver/core/JsonTest.scala
@@ -2,11 +2,12 @@ package xyz.driver.core
import java.net.InetAddress
+import com.neovisionaries.i18n.{CountryCode, CurrencyCode}
import enumeratum._
import eu.timepit.refined.collection.NonEmpty
import eu.timepit.refined.numeric.Positive
import eu.timepit.refined.refineMV
-import org.scalatest.{FlatSpec, Matchers}
+import org.scalatest.{FlatSpec, Inspectors, Matchers}
import xyz.driver.core.json._
import xyz.driver.core.time.provider.SystemTimeProvider
import spray.json._
@@ -19,7 +20,7 @@ import xyz.driver.core.time.TimeOfDay
import scala.collection.immutable.IndexedSeq
-class JsonTest extends FlatSpec with Matchers {
+class JsonTest extends FlatSpec with Matchers with Inspectors {
import DefaultJsonProtocol._
"Json format for Id" should "read and write correct JSON" in {
@@ -348,4 +349,33 @@ class JsonTest extends FlatSpec with Matchers {
written should be("{\"identifier\":\"someone@nowhere.com\",\"password\":\"nopassword\"}".parseJson)
}
+
+ "CountryCode format" should "read and write correct JSON" in {
+ val samples = Seq(
+ "US" -> CountryCode.US,
+ "CN" -> CountryCode.CN,
+ "AT" -> CountryCode.AT
+ )
+
+ forAll(samples) {
+ case (serialized, enumValue) =>
+ countryCodeFormat.write(enumValue) shouldBe JsString(serialized)
+ countryCodeFormat.read(JsString(serialized)) shouldBe enumValue
+ }
+ }
+
+ "CurrencyCode format" should "read and write correct JSON" in {
+ val samples = Seq(
+ "USD" -> CurrencyCode.USD,
+ "CNY" -> CurrencyCode.CNY,
+ "EUR" -> CurrencyCode.EUR
+ )
+
+ forAll(samples) {
+ case (serialized, enumValue) =>
+ currencyCodeFormat.write(enumValue) shouldBe JsString(serialized)
+ currencyCodeFormat.read(JsString(serialized)) shouldBe enumValue
+ }
+ }
+
}