Skip to content

Commit

Permalink
Bump version 1.0.11. ScalaVersion 3.3.3. Clean up testcases
Browse files Browse the repository at this point in the history
  • Loading branch information
chungonn committed May 5, 2024
1 parent 84044b5 commit 3225e7e
Show file tree
Hide file tree
Showing 8 changed files with 90 additions and 102 deletions.
10 changes: 5 additions & 5 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name := "commons-json"

organization := "com.greenfossil"

version := "1.0.10"
version := "1.0.11"

scalaVersion := "3.3.1"
scalaVersion := "3.3.3"

scalacOptions ++= Seq("-feature", "-deprecation", "-Wunused:imports")

Expand All @@ -13,9 +13,9 @@ Compile / javacOptions ++= Seq("-source", "17")
libraryDependencies ++= Seq(
//https://github.com/FasterXML/jackson-core
"com.fasterxml.jackson.core" % "jackson-databind" % "2.17.0",
"org.slf4j" % "slf4j-api" % "2.0.10",
"ch.qos.logback" % "logback-classic" % "1.4.14" % Test,
"org.scalameta" %% "munit" % "0.7.29" % Test
"org.slf4j" % "slf4j-api" % "2.0.12",
"ch.qos.logback" % "logback-classic" % "1.5.6" % Test,
"org.scalameta" %% "munit" % "1.0.0-RC1" % Test
)

lazy val commonsJson = project.in(file("."))
Expand Down
2 changes: 1 addition & 1 deletion project/build.properties
Original file line number Diff line number Diff line change
@@ -1 +1 @@
sbt.version=1.8.3
sbt.version=1.9.9
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ private class JsValueDeserializer(factory: TypeFactory, klass: Class[?]) extends
(None, ReadingMap(ListBuffer()) +: parserContext)
case JsonTokenId.ID_FIELD_NAME => parserContext match {
case (c: ReadingMap) :: stack =>
(None, c.setField(jp.getCurrentName) +: stack)
(None, c.setField(jp.currentName) +: stack)
case _ => throw new RuntimeException("We should be reading map, something got wrong")
}
case JsonTokenId.ID_END_OBJECT => parserContext match {
Expand Down
23 changes: 18 additions & 5 deletions src/test/scala/com/greenfossil/commons/json/BugFix.scala
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,12 @@ class BugFix extends munit.FunSuite {
def searchJson = Json.obj(
"patient" -> patientId,
"orderStatuses" -> Json.arr("SMT")
// "orderStatuses" -> Json.arr(Json.obj("name" -> "SMT"), Json.obj("type" -> "prod"))
)

println(s"searchJson = ${searchJson}")
assertNoDiff(searchJson.prettyPrint, """|{
| "patient" : "SYNASPE002",
| "orderStatuses" : [ "SMT" ]
|}
|""".stripMargin)

val requestJson: JsValue = Json.obj(
"securityHeader" -> Json.obj(
Expand All @@ -70,8 +72,19 @@ class BugFix extends munit.FunSuite {
"pageSize" -> pageSize,
"search" -> searchJson
)

println(s"requestJson = ${requestJson.toString}")
assertNoDiff(requestJson.prettyPrint, """|{
| "securityHeader" : {
| "state" : "1234567891234",
| "sourceSystem" : "eOrdering"
| },
| "pageNumber" : 0,
| "pageSize" : 50,
| "search" : {
| "patient" : "SYNASPE002",
| "orderStatuses" : [ "SMT" ]
| }
|}
|""".stripMargin)
}

}
27 changes: 12 additions & 15 deletions src/test/scala/com/greenfossil/commons/json/JsonAsSuite.scala
Original file line number Diff line number Diff line change
Expand Up @@ -102,29 +102,30 @@ class JsonAsSuite extends munit.FunSuite {
assertEquals((parsedJson \ "displayname").asOpt[String], None) //Absence of field
}

private case class WorkflowResponse(jsonValue: JsObject) {
lazy val dataJsonOpt: Option[JsValue] = (jsonValue \ "result" \ "data").toOption

test("using asOpt in case class".fail){
def get[T](key: String): Option[Long] = dataJsonOpt.flatMap(json => (json \ key).asOpt[Long])

inline def get[T](keys: String*): Option[T] = dataJsonOpt.flatMap { dataJson =>
keys.foldLeft(dataJson) { case (json, key) => json \ key }.asOpt[T]
}
}

test("using asOpt in case class"){
//This testcase will fail because `inline` should be use in the WorkflowResponse.get method
val jsonObject = Json.obj(
"result" -> Json.obj(
"data" -> Json.obj(
"id" -> 1075L,
"id" -> 1075,
"address" -> Json.obj(
"street" -> "Ang Mo Kio Ave 5",
"postalCode" -> "123456",
"blk" -> 123L
"blk" -> 123
)
)
)
)
case class WorkflowResponse(jsonValue: JsObject) {
lazy val dataJsonOpt: Option[JsValue] = (jsonValue \ "result" \ "data").toOption
def /*inline is requred*/ get[T](key: String): Option[T] = dataJsonOpt.flatMap(json => (json \ key).asOpt[T])

inline def get[T](keys: String*): Option[T] = dataJsonOpt.flatMap{ dataJson =>
keys.foldLeft(dataJson) { case (json, key) => json \ key }.asOpt[T]
}
}

val response = WorkflowResponse(jsonObject)

Expand All @@ -134,10 +135,6 @@ class JsonAsSuite extends munit.FunSuite {

val rs = response.get[Long]("id")
assertEquals(rs.getOrElse(0L), expected)
rs match {
case Some(value : Long) => println(s"Long value = ${value}")
case None => println("None")
}

assertEquals(response.get[String]("address", "street").getOrElse(""), "Ang Mo Kio Ave 5")
assertEquals(response.get[Long]("address", "blk").getOrElse(0L), 123L)
Expand Down
6 changes: 2 additions & 4 deletions src/test/scala/com/greenfossil/commons/json/JsonSuite.scala
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,7 @@ class JsonSuite extends munit.FunSuite {
val jsArray = JsArray(jsObjects)
val string = """[{"value":[1]},{"value":[1,2]},{"value":[1,2,3]},{"value":[1,2,3,4]},{"value":[1,2,3,4,5]}]"""

println(s"jsArray.toString = ${jsArray.toString}")
assertNoDiff(jsArray.toString, string)
assertNoDiff(jsArray.stringify, string)
assertEquals(Json.parse(string), jsArray)

}
Expand Down Expand Up @@ -92,8 +91,7 @@ class JsonSuite extends munit.FunSuite {
val string = "234.5"
val jsNumber = JsNumber(num)

println(s"jsNumber.toString = ${jsNumber.toString}")
assertNoDiff(jsNumber.toString, string)
assertNoDiff(jsNumber.stringify, string)
assertEquals(Json.parse(string), jsNumber)
}

Expand Down
77 changes: 51 additions & 26 deletions src/test/scala/com/greenfossil/commons/json/JsonTemporalSuite.scala
Original file line number Diff line number Diff line change
Expand Up @@ -22,34 +22,60 @@ class JsonTemporalSuite extends munit.FunSuite {
import java.time.*

test("JsTemporal creation") {
val jDate = JsTemporal(java.util.Date())
println(s"jDate = ${jDate}")
{
val jDate = java.util.Date()
val jsTemp = JsTemporal(jDate)
assertNoDiff(jsTemp.stringify, jDate.toInstant.toEpochMilli.toString)
}

{
val localDate = LocalDate.now
val jsTemp = JsTemporal(localDate)
assertNoDiff(jsTemp.stringify, s"\"${localDate.toString}\"")
}

{
val localTime = LocalTime.now
val jsTemp = JsTemporal(localTime)
assertNoDiff(jsTemp.stringify, s"\"${localTime.toString}\"")
}

{
val localDT = LocalDateTime.now
val jsTemp = JsTemporal(localDT)
assertNoDiff(jsTemp.stringify, s"\"${localDT.toString}\"")
}

{
val instant = Instant.now
val jsTemp = JsTemporal(instant)
assertNoDiff(jsTemp.stringify, s"\"${instant.toString}\"")
}

{
val offsetDT = OffsetDateTime.now
val jsTemp = JsTemporal(offsetDT)
assertNoDiff(jsTemp.stringify, s"\"${offsetDT.toString}\"")
}

{
val offsetTime = OffsetTime.now
val jsTemp = JsTemporal(offsetTime)
assertNoDiff(jsTemp.stringify, s"\"${offsetTime.toString}\"")
}

{
val zonedDT = ZonedDateTime.now
val jsTemp = JsTemporal(zonedDT)
assertNoDiff(jsTemp.stringify, s"\"${zonedDT.toString}\"")
}

val localDate = JsTemporal(LocalDate.now)
println(s"localDate = ${localDate}")

val localTime = JsTemporal(LocalTime.now)
println(s"localTime = ${localTime}")

val localDT = JsTemporal(LocalDateTime.now)
println(s"localDT = ${localDT}")

val instant = JsTemporal(Instant.now)
println(s"instant = ${instant}")

val offsetDT = JsTemporal(OffsetDateTime.now)
println(s"offsetDT = ${offsetDT}")

val offsetTime = JsTemporal(OffsetTime.now)
println(s"offsetTime = ${offsetTime}")

val zonedDT = JsTemporal(ZonedDateTime.now)
println(s"ZonedDT = ${zonedDT}")
}

test("Format") {
val localDate = JsTemporal(LocalDate.now).jsonFormat("yyyy")
println(s"localDate = ${localDate}")
val localDate = LocalDate.now
val jsTemp = JsTemporal(localDate).jsonFormat("yyyy")
assertNoDiff(jsTemp.stringify, s"\"${localDate.getYear}\"")
}

test("Json Serialization") {
Expand All @@ -73,7 +99,7 @@ class JsonTemporalSuite extends munit.FunSuite {
"jdate2" -> java.util.Date().jsonFormat("yyyy"),
"jdate3" -> java.util.Date().jsonFormat("yyyy", "Asia/Singapore")
)
println(s"jsObj = ${jsObj}")

assert(jsObj("date1").isInstanceOf[JsTemporal])
assert(jsObj("date2").isInstanceOf[JsTemporal])
assert(jsObj("date3").isInstanceOf[JsTemporal])
Expand Down Expand Up @@ -109,7 +135,6 @@ class JsonTemporalSuite extends munit.FunSuite {
"offsetTime" -> zonedDateTime.toOffsetDateTime.toOffsetTime,
"zonedDT" -> zonedDateTime,
)
println(s"jsObj = ${jsObj}")
val json = jsObj.stringify

val parsedJson = Json.parse(json).as[JsObject]
Expand Down

This file was deleted.

0 comments on commit 3225e7e

Please sign in to comment.