From a9b6a73b71a44af585f08b208960706c6cc67451 Mon Sep 17 00:00:00 2001 From: Aleksandr Nekrasov Date: Thu, 30 Apr 2020 09:53:14 +0700 Subject: [PATCH] [scala-akka-http] fixed getOffsetDateTimeHeader and removed broken test due invalid v2 spec (#6109) --- .../scala-akka-client/requests.mustache | 3 + .../openapitools/client/core/requests.scala | 3 + .../src/test/scala/PetApiTest.scala | 121 ------------------ .../openapitools/client/core/requests.scala | 3 + 4 files changed, 9 insertions(+), 121 deletions(-) delete mode 100644 samples/client/petstore/scala-akka/src/test/scala/PetApiTest.scala diff --git a/modules/openapi-generator/src/main/resources/scala-akka-client/requests.mustache b/modules/openapi-generator/src/main/resources/scala-akka-client/requests.mustache index 882eef50e895..70c8138eb54e 100644 --- a/modules/openapi-generator/src/main/resources/scala-akka-client/requests.mustache +++ b/modules/openapi-generator/src/main/resources/scala-akka-client/requests.mustache @@ -3,6 +3,7 @@ package {{mainPackage}}.core import java.io.File import java.net.URLEncoder +import java.time.OffsetDateTime import scala.util.Try @@ -26,6 +27,8 @@ sealed trait ApiReturnWithHeaders { def getBooleanHeader(name: String): Option[Boolean] = castedHeader(name, java.lang.Boolean.parseBoolean) + def getOffsetDateTimeHeader(name: String): Option[OffsetDateTime] = castedHeader(name, java.time.OffsetDateTime.parse) + private def castedHeader[U](name: String, conversion: String => U): Option[U] = { Try { header(name).map(conversion) diff --git a/samples/client/petstore/scala-akka/src/main/scala/org/openapitools/client/core/requests.scala b/samples/client/petstore/scala-akka/src/main/scala/org/openapitools/client/core/requests.scala index 0d3549efec9a..15b09453a973 100644 --- a/samples/client/petstore/scala-akka/src/main/scala/org/openapitools/client/core/requests.scala +++ b/samples/client/petstore/scala-akka/src/main/scala/org/openapitools/client/core/requests.scala @@ -13,6 +13,7 @@ package org.openapitools.client.core import java.io.File import java.net.URLEncoder +import java.time.OffsetDateTime import scala.util.Try @@ -36,6 +37,8 @@ sealed trait ApiReturnWithHeaders { def getBooleanHeader(name: String): Option[Boolean] = castedHeader(name, java.lang.Boolean.parseBoolean) + def getOffsetDateTimeHeader(name: String): Option[OffsetDateTime] = castedHeader(name, java.time.OffsetDateTime.parse) + private def castedHeader[U](name: String, conversion: String => U): Option[U] = { Try { header(name).map(conversion) diff --git a/samples/client/petstore/scala-akka/src/test/scala/PetApiTest.scala b/samples/client/petstore/scala-akka/src/test/scala/PetApiTest.scala deleted file mode 100644 index 9327a6d7585d..000000000000 --- a/samples/client/petstore/scala-akka/src/test/scala/PetApiTest.scala +++ /dev/null @@ -1,121 +0,0 @@ -import akka.actor.ActorSystem -import org.junit.runner.RunWith -import org.openapitools.client._ -import org.openapitools.client.api._ -import org.openapitools.client.core.{ApiInvoker, ApiKeyValue} -import org.openapitools.client.model._ -import org.scalatest.Inspectors._ -import org.scalatest._ -import org.scalatest.junit.JUnitRunner - -@RunWith(classOf[JUnitRunner]) -class PetApiTest extends AsyncFlatSpec with Matchers { - - private implicit val system: ActorSystem = ActorSystem() - - behavior of "PetApi" - val api: PetApi = PetApi() - val invoker: ApiInvoker = ApiInvoker(EnumsSerializers.all) - private implicit val apiKey: ApiKeyValue = ApiKeyValue("special-key") - - it should "add and fetch a pet" in { - val petId = 1000 - val createdPet = Pet( - Some(petId), - Some(Category(Some(1), Some("sold"))), - "dragon", - (for (i <- 1 to 10) yield "http://foo.com/photo/" + i).toList, - Some((for (i <- 1 to 5) yield org.openapitools.client.model.Tag(Some(i), Some("tag-" + i))).toList), - Some(PetEnums.Status.Sold) - ) - - val addPetRequest = api.addPet(createdPet) - val getPetRequest = api.getPetById(petId) - - for { - addResponse <- invoker.execute(addPetRequest) - response <- invoker.execute(getPetRequest) - } yield { - addResponse.code should be(200) - - response.code should be(200) - val pet = response.content - - pet should have( - 'id (createdPet.id), - 'status (createdPet.status), - 'category (createdPet.category), - 'name (createdPet.name) - ) - pet.tags should not be empty - pet.tags.get should contain theSameElementsInOrderAs createdPet.tags.get - pet.photoUrls should contain theSameElementsInOrderAs createdPet.photoUrls - } - } - - it should "update a pet" in { - val petId = (Math.random()*1000000000).toLong - val createdPet = Pet( - Some(petId), - Some(Category(Some(1), Some("sold"))), - "programmer", - (for (i <- 1 to 10) yield "http://foo.com/photo/" + i).toList, - Some((for (i <- 1 to 5) yield org.openapitools.client.model.Tag(Some(i), Some("tag-" + i))).toList), - Some(PetEnums.Status.Available) - ) - - for { - createdPet <- invoker.execute(api.addPet(createdPet)) - pet: core.ApiResponse[Pet] <- invoker.execute(api.getPetById(createdPet.content.id.get)) - updatedPet = pet.content.copy(status = Some(PetEnums.Status.Sold), name = "developer") - updatedPetResponse: core.ApiResponse[Pet] <- invoker.execute(api.updatePet(updatedPet)) - updatedRequested: core.ApiResponse[Pet] <- invoker.execute(api.getPetById(createdPet.content.id.get)) - } yield { - pet.content.name should be("programmer") - pet.content.status should be(Some(PetEnums.Status.Available)) - - updatedPetResponse.content.name should be("developer") - updatedPetResponse.content.status should be(Some(PetEnums.Status.Sold)) - - updatedRequested.content.name should be("developer") - updatedRequested.content.status should be(Some(PetEnums.Status.Sold)) - - } - - } - - it should "find pets by status" in { - val request = api.findPetsByStatus(List("available")) - - invoker - .execute(request) - .map { apiResponse => - apiResponse.code should be(200) - val pets = apiResponse.content - pets should not be empty - - forAll(pets) { pet => - pet.status should contain(PetEnums.Status.Available) - } - } - } - - it should "find pets by tag" in { - val request = api.findPetsByTags(List("tag1", "tag2")) - - invoker - .execute(request) - .map { apiResponse => - apiResponse.code should be(200) - - val pets = apiResponse.content - pets should not be empty - - forAll(pets) { pet => - val tagNames = pet.tags.toList.flatten.map(_.name).collect { case Some(name) => name } - tagNames should contain atLeastOneOf("tag1", "tag2") - } - } - } -} - diff --git a/samples/openapi3/client/petstore/scala-akka/src/main/scala/org/openapitools/client/core/requests.scala b/samples/openapi3/client/petstore/scala-akka/src/main/scala/org/openapitools/client/core/requests.scala index 0d3549efec9a..15b09453a973 100644 --- a/samples/openapi3/client/petstore/scala-akka/src/main/scala/org/openapitools/client/core/requests.scala +++ b/samples/openapi3/client/petstore/scala-akka/src/main/scala/org/openapitools/client/core/requests.scala @@ -13,6 +13,7 @@ package org.openapitools.client.core import java.io.File import java.net.URLEncoder +import java.time.OffsetDateTime import scala.util.Try @@ -36,6 +37,8 @@ sealed trait ApiReturnWithHeaders { def getBooleanHeader(name: String): Option[Boolean] = castedHeader(name, java.lang.Boolean.parseBoolean) + def getOffsetDateTimeHeader(name: String): Option[OffsetDateTime] = castedHeader(name, java.time.OffsetDateTime.parse) + private def castedHeader[U](name: String, conversion: String => U): Option[U] = { Try { header(name).map(conversion)