From b91372041b5d270edaa5057c5bd4cd2aad94652f Mon Sep 17 00:00:00 2001 From: Arnout Engelen Date: Sun, 1 Nov 2015 12:30:42 +0100 Subject: [PATCH] Add a stamina-testkit-based test for spray-json --- project/Build.scala | 1 + .../serialization/cart-created-v1-default | 1 + .../serialization/checkout-started-v1-default | 1 + .../scala/stamina/json/JsonPersisterSpec.scala | 18 +++++++++++++++++- .../scala/stamina/json/JsonTestDomain.scala | 7 ++++++- .../testkit/ScalatestTestGenerationSpec.scala | 13 +++++++------ 6 files changed, 33 insertions(+), 8 deletions(-) create mode 100644 stamina-json/src/test/resources/serialization/cart-created-v1-default create mode 100644 stamina-json/src/test/resources/serialization/checkout-started-v1-default diff --git a/project/Build.scala b/project/Build.scala index b8a447b..885365f 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -49,6 +49,7 @@ object Build extends Build { lazy val json = Project("stamina-json", file("stamina-json")) .dependsOn(core) + .dependsOn(testkit % "test") .settings(libSettings: _*) .settings(libraryDependencies ++= compile( diff --git a/stamina-json/src/test/resources/serialization/cart-created-v1-default b/stamina-json/src/test/resources/serialization/cart-created-v1-default new file mode 100644 index 0000000..19ad6be --- /dev/null +++ b/stamina-json/src/test/resources/serialization/cart-created-v1-default @@ -0,0 +1 @@ +eyJjYXJ0Ijp7ImlkIjoxLCJpdGVtcyI6W3siaWQiOjEsIm5hbWUiOiJXb25rYSBCYXIiLCJwcmljZSI6NTAwfSx7ImlkIjoyLCJuYW1lIjoiRXZlcmxhc3RpbmcgR29ic3RvcHBlciIsInByaWNlIjo0ODl9XX0sInRpbWVzdGFtcCI6MTQ0NjM3NzE5OTk0M30= \ No newline at end of file diff --git a/stamina-json/src/test/resources/serialization/checkout-started-v1-default b/stamina-json/src/test/resources/serialization/checkout-started-v1-default new file mode 100644 index 0000000..4b8db02 --- /dev/null +++ b/stamina-json/src/test/resources/serialization/checkout-started-v1-default @@ -0,0 +1 @@ +eyJwYXltZW50TWV0aG9kIjoibWFlc3RybyJ9 \ No newline at end of file diff --git a/stamina-json/src/test/scala/stamina/json/JsonPersisterSpec.scala b/stamina-json/src/test/scala/stamina/json/JsonPersisterSpec.scala index a3c45e7..24c945f 100644 --- a/stamina-json/src/test/scala/stamina/json/JsonPersisterSpec.scala +++ b/stamina-json/src/test/scala/stamina/json/JsonPersisterSpec.scala @@ -1,7 +1,10 @@ package stamina package json -class JsonPersisterSpec extends StaminaJsonSpec { +import stamina.testkit._ + +class JsonPersisterSpec extends StaminaJsonSpec + with StaminaTestKit { import JsonTestDomain._ import spray.json.lenses.JsonLenses._ import fommil.sjs.FamilyFormats._ @@ -56,4 +59,17 @@ class JsonPersisterSpec extends StaminaJsonSpec { v2Unpersisted.timestamp should (be > 0L and be < System.currentTimeMillis) } } + + "a persister based on stamina-json and spray-json-shapeless" should { + import fommil.sjs.FamilyFormats._ + + val persisters = Persisters(List( + persister[CartCreatedV3]("cart-created"), + persister[CheckoutStarted]("checkout-started") + )) + + persisters.generateTestsFor( + sample(v3CartCreated), + sample(checkoutStarted)) + } } diff --git a/stamina-json/src/test/scala/stamina/json/JsonTestDomain.scala b/stamina-json/src/test/scala/stamina/json/JsonTestDomain.scala index a38c0ed..3dde6cd 100644 --- a/stamina-json/src/test/scala/stamina/json/JsonTestDomain.scala +++ b/stamina-json/src/test/scala/stamina/json/JsonTestDomain.scala @@ -41,5 +41,10 @@ object JsonTestDomain { val v3Item1 = ItemV3(1, "Wonka Bar", 500) val v3Item2 = ItemV3(2, "Everlasting Gobstopper", 489) val v3Cart = CartV3(1, List(v3Item1, v3Item2)) - val v3CartCreated = CartCreatedV3(v3Cart, System.currentTimeMillis) + val v3CartCreated = CartCreatedV3(v3Cart, 1446377199943l) + + // Others + + case class CheckoutStarted(paymentMethod: String) + val checkoutStarted = CheckoutStarted("maestro") } diff --git a/stamina-testkit/src/test/scala/stamina/testkit/ScalatestTestGenerationSpec.scala b/stamina-testkit/src/test/scala/stamina/testkit/ScalatestTestGenerationSpec.scala index e720141..15f4b4e 100644 --- a/stamina-testkit/src/test/scala/stamina/testkit/ScalatestTestGenerationSpec.scala +++ b/stamina-testkit/src/test/scala/stamina/testkit/ScalatestTestGenerationSpec.scala @@ -11,14 +11,15 @@ class ScalatestTestGenerationSpec extends StaminaTestKitSpec { import TestDomain._ - case class ItemPersister(override val key: String) extends Persister[Item, V1](key) { - def persist(t: Item): Persisted = Persisted(key, currentVersion, ByteString()) - def unpersist(p: Persisted): Item = item1 - } - "A spec generated by StaminaTestKit" should { + case class ItemPersister(override val key: String) extends Persister[Item, V1](key) { + def persist(t: Item): Persisted = Persisted(key, currentVersion, ByteString()) + def unpersist(p: Persisted): Item = item1 + } + + val persisters = Persisters(ItemPersister("item1")) + val spec = new StaminaTestKit with WordSpecLike { - val persisters = Persisters(ItemPersister("item1")) "TestDomainSerialization" should { persisters.generateTestsFor( sample(item1),