Skip to content

Commit a7a23d3

Browse files
committed
More test cases
1 parent f17f0e1 commit a7a23d3

File tree

3 files changed

+23
-5
lines changed

3 files changed

+23
-5
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package pl.msitko.dhallj.generic
2+
3+
import org.dhallj.codec.DecodingFailure
4+
import org.dhallj.core.Expr
5+
6+
final case class MissingRecordField(override val target: String, missingFieldName: String, override val value: Expr)
7+
extends DecodingFailure(target, value):
8+
override def toString: String = s"Missing record field '$missingFieldName' when decoding $target"

modules/dhallj-magnolia/src/main/scala-3/pl/msitko/dhallj/generic/decoder/semiauto.scala

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,9 @@ import org.dhallj.ast.*
77
import org.dhallj.codec.{Decoder, DecodingFailure, Encoder}
88
import org.dhallj.codec.Decoder.Result
99
import org.dhallj.core.Expr
10-
import pl.msitko.dhallj.generic.Extractors
10+
import pl.msitko.dhallj.generic.{Extractors, MissingRecordField}
1111
import scala.deriving.Mirror
1212

13-
final case class MissingRecordField(override val target: String, missingFieldName: String, override val value: Expr)
14-
extends DecodingFailure(target, value):
15-
override def toString: String = s"Missing record field '$missingFieldName' when decoding $target"
16-
1713
object semiauto:
1814

1915
inline def deriveDecoder[T](using m: Mirror.Of[T]): Decoder[T] =

modules/dhallj-magnolia/src/test/scala/pl/msitko/dhallj/generic/decoder/DecoderSpec.scala

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package pl.msitko.dhallj.generic.decoder
33
import org.dhallj.codec.{Decoder, Encoder}
44
import org.dhallj.codec.syntax._
55
import org.dhallj.syntax._
6+
import pl.msitko.dhallj.generic.MissingRecordField
67
import pl.msitko.dhallj.generic.example.akka.OnOrOff.Off
78
import pl.msitko.dhallj.generic.example.akka.{Akka, Http, OnOrOff, OnOrOff2, Preview, Server}
89
import pl.msitko.dhallj.generic.example.{AppConfig, DbConfig, Error, Error1, Error2, Errors, Fixtures, StatusCode}
@@ -60,6 +61,19 @@ trait DecoderSpec { self: munit.FunSuite with Fixtures =>
6061
assertEquals(decoded, Errors(List(Error1("abc"), Error2(code = 123, code2 = 456))))
6162
}
6263

64+
test("Return MissingRecordField") {
65+
val in =
66+
"""
67+
|let Error = < Error1 : { msg : Text } | Error2 : { code : Natural, code2 : Natural } >
68+
|in { errors = [Error.Error1 { msg = "abc"}, Error.Error2 { code2 = 456 }] }
69+
|""".stripMargin
70+
71+
val res = in.parseExpr.getOr("Parsing failed").normalize().as[Errors]
72+
73+
val Left(mrf: MissingRecordField) = res
74+
assertEquals(mrf.missingFieldName, "code")
75+
}
76+
6377
test("Load union with empty parameter list as case object") {
6478
val decoded =
6579
"""

0 commit comments

Comments
 (0)