From 008e5b10d420b648e72407e6b3628d30ed734cb3 Mon Sep 17 00:00:00 2001 From: Thijs Broersen Date: Tue, 20 Feb 2024 20:38:24 +0000 Subject: [PATCH] addscala 3 enumeration decoding/encoding test --- .../scala-3/zio/json/DerivedDecoderSpec.scala | 12 +++++++- .../scala-3/zio/json/DerivedEncoderSpec.scala | 28 ++++++++++++------- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/zio-json/shared/src/test/scala-3/zio/json/DerivedDecoderSpec.scala b/zio-json/shared/src/test/scala-3/zio/json/DerivedDecoderSpec.scala index a2d702e34..18bd8b349 100644 --- a/zio-json/shared/src/test/scala-3/zio/json/DerivedDecoderSpec.scala +++ b/zio-json/shared/src/test/scala-3/zio/json/DerivedDecoderSpec.scala @@ -17,7 +17,17 @@ object DerivedDecoderSpec extends ZIOSpecDefault { """ })(isRight(anything)) }, - test("Derives for a sum type") { + test("Derives for a sum Enumeration type") { + enum Foo derives JsonDecoder: + case Bar + case Baz + case Qux + + val result = "\"Qux\"".fromJson[Foo] + + assertTrue(result == Right(Foo.Qux)) + }, + test("Derives for a sum ADT type") { assertZIO(typeCheck { """ enum Foo derives JsonDecoder: diff --git a/zio-json/shared/src/test/scala-3/zio/json/DerivedEncoderSpec.scala b/zio-json/shared/src/test/scala-3/zio/json/DerivedEncoderSpec.scala index 20fd42888..b9d6f1a26 100644 --- a/zio-json/shared/src/test/scala-3/zio/json/DerivedEncoderSpec.scala +++ b/zio-json/shared/src/test/scala-3/zio/json/DerivedEncoderSpec.scala @@ -16,17 +16,25 @@ object DerivedEncoderSpec extends ZIOSpecDefault { """ })(isRight(anything)) }, - test("Derives for a sum type") { - assertZIO(typeCheck { - """ - enum Foo derives JsonEncoder: - case Bar - case Baz(baz: String) - case Qux(foo: Foo) + test("Derives for a sum Enumeration type") { + enum Foo derives JsonEncoder: + case Bar + case Baz + case Qux - (Foo.Qux(Foo.Bar): Foo).toJson - """ - })(isRight(anything)) + val json = (Foo.Qux: Foo).toJson + + assertTrue(json == """"Qux"""") + }, + test("Derives for a sum ADT type") { + enum Foo derives JsonEncoder: + case Bar + case Baz(baz: String) + case Qux(foo: Foo) + + val json = (Foo.Qux(Foo.Bar): Foo).toJson + + assertTrue(json == """{"Qux":{"foo":{"Bar":{}}}}""") } ) }