From aac006a66ae91781a410f4520fc573796c12aa0a Mon Sep 17 00:00:00 2001 From: sravanthi-konduru <39181255+sravanthi-konduru@users.noreply.github.com> Date: Thu, 23 Aug 2018 00:47:49 +0530 Subject: [PATCH] improved coverage for JsonUtils (#73) --- utils/src/test/resources/Person.json | 7 +++ utils/src/test/resources/Person.yml | 5 ++ .../op/utils/json/JsonUtilsTest.scala | 46 ++++++++++++++++--- 3 files changed, 52 insertions(+), 6 deletions(-) create mode 100644 utils/src/test/resources/Person.json create mode 100644 utils/src/test/resources/Person.yml diff --git a/utils/src/test/resources/Person.json b/utils/src/test/resources/Person.json new file mode 100644 index 0000000000..fca9ce4307 --- /dev/null +++ b/utils/src/test/resources/Person.json @@ -0,0 +1,7 @@ +{ + "name": "Foo Bar", + "address": { + "city": "Talkeetna", + "state": "AK" + } +} \ No newline at end of file diff --git a/utils/src/test/resources/Person.yml b/utils/src/test/resources/Person.yml new file mode 100644 index 0000000000..0f4ac0c718 --- /dev/null +++ b/utils/src/test/resources/Person.yml @@ -0,0 +1,5 @@ +--- +name: Foo Bar +address: + city: Talkeetna + state: AK \ No newline at end of file diff --git a/utils/src/test/scala/com/salesforce/op/utils/json/JsonUtilsTest.scala b/utils/src/test/scala/com/salesforce/op/utils/json/JsonUtilsTest.scala index bc3c2edc6e..f9de026822 100644 --- a/utils/src/test/scala/com/salesforce/op/utils/json/JsonUtilsTest.scala +++ b/utils/src/test/scala/com/salesforce/op/utils/json/JsonUtilsTest.scala @@ -79,20 +79,50 @@ class JsonUtilsTest extends PropSpec with PropertyChecks with TestCommon { } property("handle random entries correctly") { - forAll(dataGen)(check) + forAll(dataGen)(checkJson) + forAll(dataGen)(checkYaml) } property("handle special entries correctly") { - forAll(specialDataGen)(check) + forAll(specialDataGen)(checkJson) + forAll(specialDataGen)(checkYaml) + } property("handle empty collections correctly") { - forAll(doubles) { d => check(TestDouble(d, Array.empty, Seq.empty, Map.empty, None)) } + forAll(doubles) { d => checkJson(TestDouble(d, Array.empty, Seq.empty, Map.empty, None)) } + forAll(doubles) { d => checkYaml(TestDouble(d, Array.empty, Seq.empty, Map.empty, None)) } + } + + property("read json file") { + val jsonFile = resourceFile(name = "Person.json") + val person = Person("Foo Bar", Address("Talkeetna", "AK")) + JsonUtils.fromFile[Person](jsonFile) match { + case Failure(e) => fail(e) + case Success(value) => value shouldBe person + } + } + + property("read yml file") { + val ymlFile = resourceFile(name = "Person.yml") + val person = Person("Foo Bar", Address("Talkeetna", "AK")) + JsonUtils.fromFile[Person](ymlFile) match { + case Failure(e) => fail(e) + case Success(value) => value shouldBe person + } + } + + def checkJson(data: TestDouble): Unit = { + val jsonValue: String = JsonUtils.toJsonString(data) + JsonUtils.fromString[TestDouble](jsonValue) match { + case Failure(e) => fail(e) + case Success(r) => assert(r, data) + } } - def check(data: TestDouble): Unit = { - val json = JsonUtils.toJsonString(data) - JsonUtils.fromString[TestDouble](json) match { + def checkYaml(data: TestDouble): Unit = { + val yamlValue: String = JsonUtils.toYamlString(data) + JsonUtils.fromString[TestDouble](yamlValue) match { case Failure(e) => fail(e) case Success(r) => assert(r, data) } @@ -130,3 +160,7 @@ case class TestDouble map: Map[Int, Seq[Long]], nested: Option[TestDouble] ) + +case class Person(name: String, address: Address) + +case class Address(city: String, state: String)