Skip to content

Commit

Permalink
Parsing optional JSON paths should fail with error if the provided va…
Browse files Browse the repository at this point in the history
…lue is invalid instead of returning None.
  • Loading branch information
Dag Liodden committed Sep 7, 2012
1 parent f0f0832 commit e68041f
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 1 deletion.
Expand Up @@ -322,7 +322,7 @@ trait DefaultReads {


implicit def OptionReads[T](implicit fmt: Reads[T]): Reads[Option[T]] = new Reads[Option[T]] { implicit def OptionReads[T](implicit fmt: Reads[T]): Reads[Option[T]] = new Reads[Option[T]] {
import scala.util.control.Exception._ import scala.util.control.Exception._
def reads(json: JsValue) = fmt.reads(json).fold( e => JsSuccess(None), v => JsSuccess(Some(v))) def reads(json: JsValue) = fmt.reads(json).fold( e => JsError(e), v => JsSuccess(Some(v)))
} }


/** /**
Expand Down
Expand Up @@ -24,6 +24,7 @@ object JsonValidSpec extends Specification {


"invalidate wrong simple type conversion" in { "invalidate wrong simple type conversion" in {
JsString("string").validate[Long] must equalTo(JsError(Seq(JsPath() -> Seq(ValidationError("validate.error.expected.jsnumber"))))) JsString("string").validate[Long] must equalTo(JsError(Seq(JsPath() -> Seq(ValidationError("validate.error.expected.jsnumber")))))
JsString("string").validate[Option[Long]] must equalTo(JsError(Seq(JsPath() -> Seq(ValidationError("validate.error.expected.jsnumber")))))
JsNumber(5).validate[String] must equalTo(JsError(Seq(JsPath() -> Seq(ValidationError("validate.error.expected.jsstring"))))) JsNumber(5).validate[String] must equalTo(JsError(Seq(JsPath() -> Seq(ValidationError("validate.error.expected.jsstring")))))
JsBoolean(false).validate[Double] must equalTo(JsError(Seq(JsPath() -> Seq(ValidationError("validate.error.expected.jsnumber"))))) JsBoolean(false).validate[Double] must equalTo(JsError(Seq(JsPath() -> Seq(ValidationError("validate.error.expected.jsnumber")))))
} }
Expand Down

0 comments on commit e68041f

Please sign in to comment.