forked from loafle/openapi-generator-original
[Kotlin client] Improve JSON parser (#2981)
* [Kotlin client] Improve JSON parser * fix import in model for threetenbp date
This commit is contained in:
parent
213c015c95
commit
c4bf6588aa
@ -166,14 +166,14 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co
|
|||||||
typeMapping.put("ByteArray", "kotlin.ByteArray");
|
typeMapping.put("ByteArray", "kotlin.ByteArray");
|
||||||
typeMapping.put("number", "java.math.BigDecimal");
|
typeMapping.put("number", "java.math.BigDecimal");
|
||||||
typeMapping.put("date-time", "java.time.LocalDateTime");
|
typeMapping.put("date-time", "java.time.LocalDateTime");
|
||||||
typeMapping.put("date", "java.time.LocalDateTime");
|
typeMapping.put("date", "java.time.LocalDate");
|
||||||
typeMapping.put("file", "java.io.File");
|
typeMapping.put("file", "java.io.File");
|
||||||
typeMapping.put("array", "kotlin.Array");
|
typeMapping.put("array", "kotlin.Array");
|
||||||
typeMapping.put("list", "kotlin.collections.List");
|
typeMapping.put("list", "kotlin.collections.List");
|
||||||
typeMapping.put("map", "kotlin.collections.Map");
|
typeMapping.put("map", "kotlin.collections.Map");
|
||||||
typeMapping.put("object", "kotlin.Any");
|
typeMapping.put("object", "kotlin.Any");
|
||||||
typeMapping.put("binary", "kotlin.Array<kotlin.Byte>");
|
typeMapping.put("binary", "kotlin.Array<kotlin.Byte>");
|
||||||
typeMapping.put("Date", "java.time.LocalDateTime");
|
typeMapping.put("Date", "java.time.LocalDate");
|
||||||
typeMapping.put("DateTime", "java.time.LocalDateTime");
|
typeMapping.put("DateTime", "java.time.LocalDateTime");
|
||||||
|
|
||||||
instantiationTypes.put("array", "kotlin.arrayOf");
|
instantiationTypes.put("array", "kotlin.arrayOf");
|
||||||
|
@ -131,6 +131,7 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen {
|
|||||||
typeMapping.put("DateTime", "LocalDateTime");
|
typeMapping.put("DateTime", "LocalDateTime");
|
||||||
importMapping.put("LocalDate", "org.threeten.bp.LocalDate");
|
importMapping.put("LocalDate", "org.threeten.bp.LocalDate");
|
||||||
importMapping.put("LocalDateTime", "org.threeten.bp.LocalDateTime");
|
importMapping.put("LocalDateTime", "org.threeten.bp.LocalDateTime");
|
||||||
|
defaultIncludes.add("org.threeten.bp.LocalDate");
|
||||||
defaultIncludes.add("org.threeten.bp.LocalDateTime");
|
defaultIncludes.add("org.threeten.bp.LocalDateTime");
|
||||||
} else if (DateLibrary.STRING.value.equals(dateLibrary)) {
|
} else if (DateLibrary.STRING.value.equals(dateLibrary)) {
|
||||||
typeMapping.put("date-time", "kotlin.String");
|
typeMapping.put("date-time", "kotlin.String");
|
||||||
@ -166,5 +167,8 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen {
|
|||||||
supportingFiles.add(new SupportingFile("infrastructure/Serializer.kt.mustache", infrastructureFolder, "Serializer.kt"));
|
supportingFiles.add(new SupportingFile("infrastructure/Serializer.kt.mustache", infrastructureFolder, "Serializer.kt"));
|
||||||
supportingFiles.add(new SupportingFile("infrastructure/Errors.kt.mustache", infrastructureFolder, "Errors.kt"));
|
supportingFiles.add(new SupportingFile("infrastructure/Errors.kt.mustache", infrastructureFolder, "Errors.kt"));
|
||||||
supportingFiles.add(new SupportingFile("infrastructure/ByteArrayAdapter.kt.mustache", infrastructureFolder, "ByteArrayAdapter.kt"));
|
supportingFiles.add(new SupportingFile("infrastructure/ByteArrayAdapter.kt.mustache", infrastructureFolder, "ByteArrayAdapter.kt"));
|
||||||
|
supportingFiles.add(new SupportingFile("infrastructure/LocalDateAdapter.kt.mustache", infrastructureFolder, "LocalDateAdapter.kt"));
|
||||||
|
supportingFiles.add(new SupportingFile("infrastructure/LocalDateTimeAdapter.kt.mustache", infrastructureFolder, "LocalDateTimeAdapter.kt"));
|
||||||
|
supportingFiles.add(new SupportingFile("infrastructure/UUIDAdapter.kt.mustache", infrastructureFolder, "UUIDAdapter.kt"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,9 +15,6 @@ import {{packageName}}.infrastructure.RequestMethod
|
|||||||
import {{packageName}}.infrastructure.ResponseType
|
import {{packageName}}.infrastructure.ResponseType
|
||||||
import {{packageName}}.infrastructure.Success
|
import {{packageName}}.infrastructure.Success
|
||||||
import {{packageName}}.infrastructure.toMultiValue
|
import {{packageName}}.infrastructure.toMultiValue
|
||||||
{{#threetenbp}}
|
|
||||||
import org.threeten.bp.LocalDateTime
|
|
||||||
{{/threetenbp}}
|
|
||||||
|
|
||||||
{{#operations}}
|
{{#operations}}
|
||||||
class {{classname}}(basePath: kotlin.String = "{{{basePath}}}") : ApiClient(basePath) {
|
class {{classname}}(basePath: kotlin.String = "{{{basePath}}}") : ApiClient(basePath) {
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
package {{packageName}}.infrastructure
|
package {{packageName}}.infrastructure
|
||||||
|
|
||||||
import com.squareup.moshi.FromJson
|
|
||||||
import com.squareup.moshi.KotlinJsonAdapterFactory
|
import com.squareup.moshi.KotlinJsonAdapterFactory
|
||||||
import com.squareup.moshi.Moshi
|
import com.squareup.moshi.Moshi
|
||||||
import com.squareup.moshi.ToJson
|
import com.squareup.moshi.Rfc3339DateJsonAdapter
|
||||||
import okhttp3.OkHttpClient
|
import okhttp3.OkHttpClient
|
||||||
import okhttp3.RequestBody
|
import okhttp3.RequestBody
|
||||||
import okhttp3.MediaType
|
import okhttp3.MediaType
|
||||||
@ -12,7 +11,7 @@ import okhttp3.HttpUrl
|
|||||||
import okhttp3.ResponseBody
|
import okhttp3.ResponseBody
|
||||||
import okhttp3.Request
|
import okhttp3.Request
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.UUID
|
import java.util.Date
|
||||||
|
|
||||||
open class ApiClient(val baseUrl: String) {
|
open class ApiClient(val baseUrl: String) {
|
||||||
companion object {
|
companion object {
|
||||||
@ -63,12 +62,11 @@ open class ApiClient(val baseUrl: String) {
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
return when(mediaType) {
|
return when(mediaType) {
|
||||||
JsonMediaType -> Moshi.Builder().add(object {
|
JsonMediaType -> Moshi.Builder()
|
||||||
@ToJson
|
.add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe())
|
||||||
fun toJson(uuid: UUID) = uuid.toString()
|
.add(LocalDateTimeAdapter())
|
||||||
@FromJson
|
.add(LocalDateAdapter())
|
||||||
fun fromJson(s: String) = UUID.fromString(s)
|
.add(UUIDAdapter())
|
||||||
})
|
|
||||||
.add(ByteArrayAdapter())
|
.add(ByteArrayAdapter())
|
||||||
.add(KotlinJsonAdapterFactory())
|
.add(KotlinJsonAdapterFactory())
|
||||||
.build().adapter(T::class.java).fromJson(bodyContent)
|
.build().adapter(T::class.java).fromJson(bodyContent)
|
||||||
|
@ -0,0 +1,25 @@
|
|||||||
|
package {{packageName}}.infrastructure
|
||||||
|
|
||||||
|
import com.squareup.moshi.FromJson
|
||||||
|
import com.squareup.moshi.ToJson
|
||||||
|
{{^threetenbp}}
|
||||||
|
import java.time.LocalDate
|
||||||
|
import java.time.format.DateTimeFormatter
|
||||||
|
{{/threetenbp}}
|
||||||
|
{{#threetenbp}}
|
||||||
|
import org.threeten.bp.LocalDate
|
||||||
|
import org.threeten.bp.format.DateTimeFormatter
|
||||||
|
{{/threetenbp}}
|
||||||
|
|
||||||
|
class LocalDateAdapter {
|
||||||
|
@ToJson
|
||||||
|
fun toJson(value: LocalDate): String {
|
||||||
|
return DateTimeFormatter.ISO_LOCAL_DATE.format(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
@FromJson
|
||||||
|
fun fromJson(value: String): LocalDate {
|
||||||
|
return LocalDate.parse(value, DateTimeFormatter.ISO_LOCAL_DATE)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
package {{packageName}}.infrastructure
|
||||||
|
|
||||||
|
import com.squareup.moshi.FromJson
|
||||||
|
import com.squareup.moshi.ToJson
|
||||||
|
{{^threetenbp}}
|
||||||
|
import java.time.LocalDateTime
|
||||||
|
import java.time.format.DateTimeFormatter
|
||||||
|
{{/threetenbp}}
|
||||||
|
{{#threetenbp}}
|
||||||
|
import org.threeten.bp.LocalDateTime
|
||||||
|
import org.threeten.bp.format.DateTimeFormatter
|
||||||
|
{{/threetenbp}}
|
||||||
|
|
||||||
|
class LocalDateTimeAdapter {
|
||||||
|
@ToJson
|
||||||
|
fun toJson(value: LocalDateTime): String {
|
||||||
|
return DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
@FromJson
|
||||||
|
fun fromJson(value: String): LocalDateTime {
|
||||||
|
return LocalDateTime.parse(value, DateTimeFormatter.ISO_LOCAL_DATE_TIME)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -3,12 +3,16 @@ package {{packageName}}.infrastructure
|
|||||||
import com.squareup.moshi.KotlinJsonAdapterFactory
|
import com.squareup.moshi.KotlinJsonAdapterFactory
|
||||||
import com.squareup.moshi.Moshi
|
import com.squareup.moshi.Moshi
|
||||||
import com.squareup.moshi.Rfc3339DateJsonAdapter
|
import com.squareup.moshi.Rfc3339DateJsonAdapter
|
||||||
import java.util.*
|
import java.util.Date
|
||||||
|
|
||||||
object Serializer {
|
object Serializer {
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
val moshi: Moshi = Moshi.Builder()
|
val moshi: Moshi = Moshi.Builder()
|
||||||
.add(KotlinJsonAdapterFactory())
|
|
||||||
.add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe())
|
.add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe())
|
||||||
|
.add(LocalDateTimeAdapter())
|
||||||
|
.add(LocalDateAdapter())
|
||||||
|
.add(UUIDAdapter())
|
||||||
|
.add(ByteArrayAdapter())
|
||||||
|
.add(KotlinJsonAdapterFactory())
|
||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,13 @@
|
|||||||
|
package {{packageName}}.infrastructure
|
||||||
|
|
||||||
|
import com.squareup.moshi.FromJson
|
||||||
|
import com.squareup.moshi.ToJson
|
||||||
|
import java.util.UUID
|
||||||
|
|
||||||
|
class UUIDAdapter {
|
||||||
|
@ToJson
|
||||||
|
fun toJson(uuid: UUID) = uuid.toString()
|
||||||
|
|
||||||
|
@FromJson
|
||||||
|
fun fromJson(s: String) = UUID.fromString(s)
|
||||||
|
}
|
@ -3,9 +3,6 @@ package {{modelPackage}}
|
|||||||
|
|
||||||
{{#imports}}import {{import}}
|
{{#imports}}import {{import}}
|
||||||
{{/imports}}
|
{{/imports}}
|
||||||
{{#threetenbp}}
|
|
||||||
import org.threeten.bp.LocalDateTime
|
|
||||||
{{/threetenbp}}
|
|
||||||
|
|
||||||
{{#models}}
|
{{#models}}
|
||||||
{{#model}}
|
{{#model}}
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
package org.openapitools.client.infrastructure
|
package org.openapitools.client.infrastructure
|
||||||
|
|
||||||
import com.squareup.moshi.FromJson
|
|
||||||
import com.squareup.moshi.KotlinJsonAdapterFactory
|
import com.squareup.moshi.KotlinJsonAdapterFactory
|
||||||
import com.squareup.moshi.Moshi
|
import com.squareup.moshi.Moshi
|
||||||
import com.squareup.moshi.ToJson
|
import com.squareup.moshi.Rfc3339DateJsonAdapter
|
||||||
import okhttp3.OkHttpClient
|
import okhttp3.OkHttpClient
|
||||||
import okhttp3.RequestBody
|
import okhttp3.RequestBody
|
||||||
import okhttp3.MediaType
|
import okhttp3.MediaType
|
||||||
@ -12,7 +11,7 @@ import okhttp3.HttpUrl
|
|||||||
import okhttp3.ResponseBody
|
import okhttp3.ResponseBody
|
||||||
import okhttp3.Request
|
import okhttp3.Request
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.UUID
|
import java.util.Date
|
||||||
|
|
||||||
open class ApiClient(val baseUrl: String) {
|
open class ApiClient(val baseUrl: String) {
|
||||||
companion object {
|
companion object {
|
||||||
@ -63,12 +62,11 @@ open class ApiClient(val baseUrl: String) {
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
return when(mediaType) {
|
return when(mediaType) {
|
||||||
JsonMediaType -> Moshi.Builder().add(object {
|
JsonMediaType -> Moshi.Builder()
|
||||||
@ToJson
|
.add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe())
|
||||||
fun toJson(uuid: UUID) = uuid.toString()
|
.add(LocalDateTimeAdapter())
|
||||||
@FromJson
|
.add(LocalDateAdapter())
|
||||||
fun fromJson(s: String) = UUID.fromString(s)
|
.add(UUIDAdapter())
|
||||||
})
|
|
||||||
.add(ByteArrayAdapter())
|
.add(ByteArrayAdapter())
|
||||||
.add(KotlinJsonAdapterFactory())
|
.add(KotlinJsonAdapterFactory())
|
||||||
.build().adapter(T::class.java).fromJson(bodyContent)
|
.build().adapter(T::class.java).fromJson(bodyContent)
|
||||||
|
@ -0,0 +1,19 @@
|
|||||||
|
package org.openapitools.client.infrastructure
|
||||||
|
|
||||||
|
import com.squareup.moshi.FromJson
|
||||||
|
import com.squareup.moshi.ToJson
|
||||||
|
import java.time.LocalDate
|
||||||
|
import java.time.format.DateTimeFormatter
|
||||||
|
|
||||||
|
class LocalDateAdapter {
|
||||||
|
@ToJson
|
||||||
|
fun toJson(value: LocalDate): String {
|
||||||
|
return DateTimeFormatter.ISO_LOCAL_DATE.format(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
@FromJson
|
||||||
|
fun fromJson(value: String): LocalDate {
|
||||||
|
return LocalDate.parse(value, DateTimeFormatter.ISO_LOCAL_DATE)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package org.openapitools.client.infrastructure
|
||||||
|
|
||||||
|
import com.squareup.moshi.FromJson
|
||||||
|
import com.squareup.moshi.ToJson
|
||||||
|
import java.time.LocalDateTime
|
||||||
|
import java.time.format.DateTimeFormatter
|
||||||
|
|
||||||
|
class LocalDateTimeAdapter {
|
||||||
|
@ToJson
|
||||||
|
fun toJson(value: LocalDateTime): String {
|
||||||
|
return DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
@FromJson
|
||||||
|
fun fromJson(value: String): LocalDateTime {
|
||||||
|
return LocalDateTime.parse(value, DateTimeFormatter.ISO_LOCAL_DATE_TIME)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -3,12 +3,16 @@ package org.openapitools.client.infrastructure
|
|||||||
import com.squareup.moshi.KotlinJsonAdapterFactory
|
import com.squareup.moshi.KotlinJsonAdapterFactory
|
||||||
import com.squareup.moshi.Moshi
|
import com.squareup.moshi.Moshi
|
||||||
import com.squareup.moshi.Rfc3339DateJsonAdapter
|
import com.squareup.moshi.Rfc3339DateJsonAdapter
|
||||||
import java.util.*
|
import java.util.Date
|
||||||
|
|
||||||
object Serializer {
|
object Serializer {
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
val moshi: Moshi = Moshi.Builder()
|
val moshi: Moshi = Moshi.Builder()
|
||||||
.add(KotlinJsonAdapterFactory())
|
|
||||||
.add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe())
|
.add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe())
|
||||||
|
.add(LocalDateTimeAdapter())
|
||||||
|
.add(LocalDateAdapter())
|
||||||
|
.add(UUIDAdapter())
|
||||||
|
.add(ByteArrayAdapter())
|
||||||
|
.add(KotlinJsonAdapterFactory())
|
||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,13 @@
|
|||||||
|
package org.openapitools.client.infrastructure
|
||||||
|
|
||||||
|
import com.squareup.moshi.FromJson
|
||||||
|
import com.squareup.moshi.ToJson
|
||||||
|
import java.util.UUID
|
||||||
|
|
||||||
|
class UUIDAdapter {
|
||||||
|
@ToJson
|
||||||
|
fun toJson(uuid: UUID) = uuid.toString()
|
||||||
|
|
||||||
|
@FromJson
|
||||||
|
fun fromJson(s: String) = UUID.fromString(s)
|
||||||
|
}
|
@ -2,8 +2,11 @@ package org.openapitools.client
|
|||||||
|
|
||||||
import io.kotlintest.shouldBe
|
import io.kotlintest.shouldBe
|
||||||
import io.kotlintest.matchers.numerics.shouldBeGreaterThan
|
import io.kotlintest.matchers.numerics.shouldBeGreaterThan
|
||||||
|
import io.kotlintest.matchers.string.shouldContain
|
||||||
|
import io.kotlintest.shouldThrow
|
||||||
import io.kotlintest.specs.ShouldSpec
|
import io.kotlintest.specs.ShouldSpec
|
||||||
import org.openapitools.client.apis.PetApi
|
import org.openapitools.client.apis.PetApi
|
||||||
|
import org.openapitools.client.infrastructure.ClientException
|
||||||
import org.openapitools.client.models.Category
|
import org.openapitools.client.models.Category
|
||||||
import org.openapitools.client.models.Pet
|
import org.openapitools.client.models.Pet
|
||||||
import org.openapitools.client.models.Tag
|
import org.openapitools.client.models.Tag
|
||||||
@ -11,8 +14,11 @@ import org.openapitools.client.models.Tag
|
|||||||
class PetApiTest : ShouldSpec() {
|
class PetApiTest : ShouldSpec() {
|
||||||
init {
|
init {
|
||||||
|
|
||||||
|
val petId:Long = 10006
|
||||||
|
val api = PetApi()
|
||||||
|
|
||||||
should("add a pet") {
|
should("add a pet") {
|
||||||
val petId:Long = 10006
|
|
||||||
val pet = Pet(
|
val pet = Pet(
|
||||||
id = petId,
|
id = petId,
|
||||||
name = "kotlin client test",
|
name = "kotlin client test",
|
||||||
@ -20,15 +26,11 @@ class PetApiTest : ShouldSpec() {
|
|||||||
category = Category(petId, "test kotlin category"),
|
category = Category(petId, "test kotlin category"),
|
||||||
tags = arrayOf(Tag(petId, "test kotlin tag"))
|
tags = arrayOf(Tag(petId, "test kotlin tag"))
|
||||||
)
|
)
|
||||||
|
|
||||||
val api = PetApi()
|
|
||||||
api.addPet(pet)
|
api.addPet(pet)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
should("get pet by id") {
|
should("get pet by id") {
|
||||||
val petId: Long = 10006
|
|
||||||
val api = PetApi()
|
|
||||||
val result = api.getPetById(petId)
|
val result = api.getPetById(petId)
|
||||||
|
|
||||||
result.id shouldBe (petId)
|
result.id shouldBe (petId)
|
||||||
@ -42,7 +44,6 @@ class PetApiTest : ShouldSpec() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
should("find pet by status") {
|
should("find pet by status") {
|
||||||
val api = PetApi()
|
|
||||||
val result = api.findPetsByStatus(arrayOf("available"))
|
val result = api.findPetsByStatus(arrayOf("available"))
|
||||||
|
|
||||||
result.size.shouldBeGreaterThan(0)
|
result.size.shouldBeGreaterThan(0)
|
||||||
@ -58,15 +59,12 @@ class PetApiTest : ShouldSpec() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
should("update a pet") {
|
should("update a pet") {
|
||||||
val petId:Long = 10007
|
|
||||||
val pet = Pet(
|
val pet = Pet(
|
||||||
id = petId,
|
id = petId,
|
||||||
name = "kotlin client updatePet",
|
name = "kotlin client updatePet",
|
||||||
status = Pet.Status.pending,
|
status = Pet.Status.pending,
|
||||||
photoUrls = arrayOf("http://test_kotlin_unit_test.com")
|
photoUrls = arrayOf("http://test_kotlin_unit_test.com")
|
||||||
)
|
)
|
||||||
|
|
||||||
val api = PetApi()
|
|
||||||
api.updatePet(pet)
|
api.updatePet(pet)
|
||||||
|
|
||||||
// verify updated Pet
|
// verify updated Pet
|
||||||
@ -77,14 +75,10 @@ class PetApiTest : ShouldSpec() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO the test fail cause client doesn't support other JSON contentType/Accept
|
|
||||||
/*
|
|
||||||
should("update a pet with form") {
|
should("update a pet with form") {
|
||||||
val petId:Long = 10007
|
|
||||||
val name = "kotlin client updatePet with Form"
|
val name = "kotlin client updatePet with Form"
|
||||||
val status = "pending"
|
val status = "pending"
|
||||||
|
|
||||||
val api = PetApi()
|
|
||||||
api.updatePetWithForm(petId, name, status)
|
api.updatePetWithForm(petId, name, status)
|
||||||
|
|
||||||
// verify updated Pet
|
// verify updated Pet
|
||||||
@ -94,7 +88,16 @@ class PetApiTest : ShouldSpec() {
|
|||||||
result.status shouldBe (Pet.Status.pending)
|
result.status shouldBe (Pet.Status.pending)
|
||||||
|
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
should("delete a pet") {
|
||||||
|
api.deletePet(petId, "apiKey")
|
||||||
|
|
||||||
|
// verify updated Pet
|
||||||
|
val exception = shouldThrow<ClientException> {
|
||||||
|
api.getPetById(petId)
|
||||||
|
}
|
||||||
|
exception.message?.shouldContain("Pet not found")
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,7 +25,6 @@ import org.openapitools.client.infrastructure.RequestMethod
|
|||||||
import org.openapitools.client.infrastructure.ResponseType
|
import org.openapitools.client.infrastructure.ResponseType
|
||||||
import org.openapitools.client.infrastructure.Success
|
import org.openapitools.client.infrastructure.Success
|
||||||
import org.openapitools.client.infrastructure.toMultiValue
|
import org.openapitools.client.infrastructure.toMultiValue
|
||||||
import org.threeten.bp.LocalDateTime
|
|
||||||
|
|
||||||
class PetApi(basePath: kotlin.String = "http://petstore.swagger.io/v2") : ApiClient(basePath) {
|
class PetApi(basePath: kotlin.String = "http://petstore.swagger.io/v2") : ApiClient(basePath) {
|
||||||
|
|
||||||
|
@ -24,7 +24,6 @@ import org.openapitools.client.infrastructure.RequestMethod
|
|||||||
import org.openapitools.client.infrastructure.ResponseType
|
import org.openapitools.client.infrastructure.ResponseType
|
||||||
import org.openapitools.client.infrastructure.Success
|
import org.openapitools.client.infrastructure.Success
|
||||||
import org.openapitools.client.infrastructure.toMultiValue
|
import org.openapitools.client.infrastructure.toMultiValue
|
||||||
import org.threeten.bp.LocalDateTime
|
|
||||||
|
|
||||||
class StoreApi(basePath: kotlin.String = "http://petstore.swagger.io/v2") : ApiClient(basePath) {
|
class StoreApi(basePath: kotlin.String = "http://petstore.swagger.io/v2") : ApiClient(basePath) {
|
||||||
|
|
||||||
|
@ -24,7 +24,6 @@ import org.openapitools.client.infrastructure.RequestMethod
|
|||||||
import org.openapitools.client.infrastructure.ResponseType
|
import org.openapitools.client.infrastructure.ResponseType
|
||||||
import org.openapitools.client.infrastructure.Success
|
import org.openapitools.client.infrastructure.Success
|
||||||
import org.openapitools.client.infrastructure.toMultiValue
|
import org.openapitools.client.infrastructure.toMultiValue
|
||||||
import org.threeten.bp.LocalDateTime
|
|
||||||
|
|
||||||
class UserApi(basePath: kotlin.String = "http://petstore.swagger.io/v2") : ApiClient(basePath) {
|
class UserApi(basePath: kotlin.String = "http://petstore.swagger.io/v2") : ApiClient(basePath) {
|
||||||
|
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
package org.openapitools.client.infrastructure
|
package org.openapitools.client.infrastructure
|
||||||
|
|
||||||
import com.squareup.moshi.FromJson
|
|
||||||
import com.squareup.moshi.KotlinJsonAdapterFactory
|
import com.squareup.moshi.KotlinJsonAdapterFactory
|
||||||
import com.squareup.moshi.Moshi
|
import com.squareup.moshi.Moshi
|
||||||
import com.squareup.moshi.ToJson
|
import com.squareup.moshi.Rfc3339DateJsonAdapter
|
||||||
import okhttp3.OkHttpClient
|
import okhttp3.OkHttpClient
|
||||||
import okhttp3.RequestBody
|
import okhttp3.RequestBody
|
||||||
import okhttp3.MediaType
|
import okhttp3.MediaType
|
||||||
@ -12,7 +11,7 @@ import okhttp3.HttpUrl
|
|||||||
import okhttp3.ResponseBody
|
import okhttp3.ResponseBody
|
||||||
import okhttp3.Request
|
import okhttp3.Request
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.UUID
|
import java.util.Date
|
||||||
|
|
||||||
open class ApiClient(val baseUrl: String) {
|
open class ApiClient(val baseUrl: String) {
|
||||||
companion object {
|
companion object {
|
||||||
@ -63,12 +62,11 @@ open class ApiClient(val baseUrl: String) {
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
return when(mediaType) {
|
return when(mediaType) {
|
||||||
JsonMediaType -> Moshi.Builder().add(object {
|
JsonMediaType -> Moshi.Builder()
|
||||||
@ToJson
|
.add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe())
|
||||||
fun toJson(uuid: UUID) = uuid.toString()
|
.add(LocalDateTimeAdapter())
|
||||||
@FromJson
|
.add(LocalDateAdapter())
|
||||||
fun fromJson(s: String) = UUID.fromString(s)
|
.add(UUIDAdapter())
|
||||||
})
|
|
||||||
.add(ByteArrayAdapter())
|
.add(ByteArrayAdapter())
|
||||||
.add(KotlinJsonAdapterFactory())
|
.add(KotlinJsonAdapterFactory())
|
||||||
.build().adapter(T::class.java).fromJson(bodyContent)
|
.build().adapter(T::class.java).fromJson(bodyContent)
|
||||||
|
@ -0,0 +1,19 @@
|
|||||||
|
package org.openapitools.client.infrastructure
|
||||||
|
|
||||||
|
import com.squareup.moshi.FromJson
|
||||||
|
import com.squareup.moshi.ToJson
|
||||||
|
import org.threeten.bp.LocalDate
|
||||||
|
import org.threeten.bp.format.DateTimeFormatter
|
||||||
|
|
||||||
|
class LocalDateAdapter {
|
||||||
|
@ToJson
|
||||||
|
fun toJson(value: LocalDate): String {
|
||||||
|
return DateTimeFormatter.ISO_LOCAL_DATE.format(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
@FromJson
|
||||||
|
fun fromJson(value: String): LocalDate {
|
||||||
|
return LocalDate.parse(value, DateTimeFormatter.ISO_LOCAL_DATE)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package org.openapitools.client.infrastructure
|
||||||
|
|
||||||
|
import com.squareup.moshi.FromJson
|
||||||
|
import com.squareup.moshi.ToJson
|
||||||
|
import org.threeten.bp.LocalDateTime
|
||||||
|
import org.threeten.bp.format.DateTimeFormatter
|
||||||
|
|
||||||
|
class LocalDateTimeAdapter {
|
||||||
|
@ToJson
|
||||||
|
fun toJson(value: LocalDateTime): String {
|
||||||
|
return DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
@FromJson
|
||||||
|
fun fromJson(value: String): LocalDateTime {
|
||||||
|
return LocalDateTime.parse(value, DateTimeFormatter.ISO_LOCAL_DATE_TIME)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -3,12 +3,16 @@ package org.openapitools.client.infrastructure
|
|||||||
import com.squareup.moshi.KotlinJsonAdapterFactory
|
import com.squareup.moshi.KotlinJsonAdapterFactory
|
||||||
import com.squareup.moshi.Moshi
|
import com.squareup.moshi.Moshi
|
||||||
import com.squareup.moshi.Rfc3339DateJsonAdapter
|
import com.squareup.moshi.Rfc3339DateJsonAdapter
|
||||||
import java.util.*
|
import java.util.Date
|
||||||
|
|
||||||
object Serializer {
|
object Serializer {
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
val moshi: Moshi = Moshi.Builder()
|
val moshi: Moshi = Moshi.Builder()
|
||||||
.add(KotlinJsonAdapterFactory())
|
|
||||||
.add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe())
|
.add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe())
|
||||||
|
.add(LocalDateTimeAdapter())
|
||||||
|
.add(LocalDateAdapter())
|
||||||
|
.add(UUIDAdapter())
|
||||||
|
.add(ByteArrayAdapter())
|
||||||
|
.add(KotlinJsonAdapterFactory())
|
||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,13 @@
|
|||||||
|
package org.openapitools.client.infrastructure
|
||||||
|
|
||||||
|
import com.squareup.moshi.FromJson
|
||||||
|
import com.squareup.moshi.ToJson
|
||||||
|
import java.util.UUID
|
||||||
|
|
||||||
|
class UUIDAdapter {
|
||||||
|
@ToJson
|
||||||
|
fun toJson(uuid: UUID) = uuid.toString()
|
||||||
|
|
||||||
|
@FromJson
|
||||||
|
fun fromJson(s: String) = UUID.fromString(s)
|
||||||
|
}
|
@ -11,7 +11,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.openapitools.client.models
|
package org.openapitools.client.models
|
||||||
|
|
||||||
import org.threeten.bp.LocalDateTime
|
|
||||||
|
|
||||||
import com.squareup.moshi.Json
|
import com.squareup.moshi.Json
|
||||||
/**
|
/**
|
||||||
|
@ -11,7 +11,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.openapitools.client.models
|
package org.openapitools.client.models
|
||||||
|
|
||||||
import org.threeten.bp.LocalDateTime
|
|
||||||
|
|
||||||
import com.squareup.moshi.Json
|
import com.squareup.moshi.Json
|
||||||
/**
|
/**
|
||||||
|
@ -11,7 +11,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.openapitools.client.models
|
package org.openapitools.client.models
|
||||||
|
|
||||||
import org.threeten.bp.LocalDateTime
|
|
||||||
|
|
||||||
import com.squareup.moshi.Json
|
import com.squareup.moshi.Json
|
||||||
/**
|
/**
|
||||||
|
@ -13,7 +13,6 @@ package org.openapitools.client.models
|
|||||||
|
|
||||||
import org.openapitools.client.models.Category
|
import org.openapitools.client.models.Category
|
||||||
import org.openapitools.client.models.Tag
|
import org.openapitools.client.models.Tag
|
||||||
import org.threeten.bp.LocalDateTime
|
|
||||||
|
|
||||||
import com.squareup.moshi.Json
|
import com.squareup.moshi.Json
|
||||||
/**
|
/**
|
||||||
|
@ -11,7 +11,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.openapitools.client.models
|
package org.openapitools.client.models
|
||||||
|
|
||||||
import org.threeten.bp.LocalDateTime
|
|
||||||
|
|
||||||
import com.squareup.moshi.Json
|
import com.squareup.moshi.Json
|
||||||
/**
|
/**
|
||||||
|
@ -11,7 +11,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.openapitools.client.models
|
package org.openapitools.client.models
|
||||||
|
|
||||||
import org.threeten.bp.LocalDateTime
|
|
||||||
|
|
||||||
import com.squareup.moshi.Json
|
import com.squareup.moshi.Json
|
||||||
/**
|
/**
|
||||||
|
@ -2,8 +2,11 @@ package org.openapitools.client
|
|||||||
|
|
||||||
import io.kotlintest.shouldBe
|
import io.kotlintest.shouldBe
|
||||||
import io.kotlintest.matchers.numerics.shouldBeGreaterThan
|
import io.kotlintest.matchers.numerics.shouldBeGreaterThan
|
||||||
|
import io.kotlintest.matchers.string.shouldContain
|
||||||
|
import io.kotlintest.shouldThrow
|
||||||
import io.kotlintest.specs.ShouldSpec
|
import io.kotlintest.specs.ShouldSpec
|
||||||
import org.openapitools.client.apis.PetApi
|
import org.openapitools.client.apis.PetApi
|
||||||
|
import org.openapitools.client.infrastructure.ClientException
|
||||||
import org.openapitools.client.models.Category
|
import org.openapitools.client.models.Category
|
||||||
import org.openapitools.client.models.Pet
|
import org.openapitools.client.models.Pet
|
||||||
import org.openapitools.client.models.Tag
|
import org.openapitools.client.models.Tag
|
||||||
@ -11,8 +14,11 @@ import org.openapitools.client.models.Tag
|
|||||||
class PetApiTest : ShouldSpec() {
|
class PetApiTest : ShouldSpec() {
|
||||||
init {
|
init {
|
||||||
|
|
||||||
|
val petId:Long = 10006
|
||||||
|
val api = PetApi()
|
||||||
|
|
||||||
should("add a pet") {
|
should("add a pet") {
|
||||||
val petId:Long = 10006
|
|
||||||
val pet = Pet(
|
val pet = Pet(
|
||||||
id = petId,
|
id = petId,
|
||||||
name = "kotlin client test",
|
name = "kotlin client test",
|
||||||
@ -20,15 +26,11 @@ class PetApiTest : ShouldSpec() {
|
|||||||
category = Category(petId, "test kotlin category"),
|
category = Category(petId, "test kotlin category"),
|
||||||
tags = arrayOf(Tag(petId, "test kotlin tag"))
|
tags = arrayOf(Tag(petId, "test kotlin tag"))
|
||||||
)
|
)
|
||||||
|
|
||||||
val api = PetApi()
|
|
||||||
api.addPet(pet)
|
api.addPet(pet)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
should("get pet by id") {
|
should("get pet by id") {
|
||||||
val petId: Long = 10006
|
|
||||||
val api = PetApi()
|
|
||||||
val result = api.getPetById(petId)
|
val result = api.getPetById(petId)
|
||||||
|
|
||||||
result.id shouldBe (petId)
|
result.id shouldBe (petId)
|
||||||
@ -42,7 +44,6 @@ class PetApiTest : ShouldSpec() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
should("find pet by status") {
|
should("find pet by status") {
|
||||||
val api = PetApi()
|
|
||||||
val result = api.findPetsByStatus(arrayOf("available"))
|
val result = api.findPetsByStatus(arrayOf("available"))
|
||||||
|
|
||||||
result.size.shouldBeGreaterThan(0)
|
result.size.shouldBeGreaterThan(0)
|
||||||
@ -58,15 +59,12 @@ class PetApiTest : ShouldSpec() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
should("update a pet") {
|
should("update a pet") {
|
||||||
val petId:Long = 10007
|
|
||||||
val pet = Pet(
|
val pet = Pet(
|
||||||
id = petId,
|
id = petId,
|
||||||
name = "kotlin client updatePet",
|
name = "kotlin client updatePet",
|
||||||
status = Pet.Status.pending,
|
status = Pet.Status.pending,
|
||||||
photoUrls = arrayOf("http://test_kotlin_unit_test.com")
|
photoUrls = arrayOf("http://test_kotlin_unit_test.com")
|
||||||
)
|
)
|
||||||
|
|
||||||
val api = PetApi()
|
|
||||||
api.updatePet(pet)
|
api.updatePet(pet)
|
||||||
|
|
||||||
// verify updated Pet
|
// verify updated Pet
|
||||||
@ -77,14 +75,10 @@ class PetApiTest : ShouldSpec() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO the test fail cause client doesn't support other JSON contentType/Accept
|
|
||||||
/*
|
|
||||||
should("update a pet with form") {
|
should("update a pet with form") {
|
||||||
val petId:Long = 10007
|
|
||||||
val name = "kotlin client updatePet with Form"
|
val name = "kotlin client updatePet with Form"
|
||||||
val status = "pending"
|
val status = "pending"
|
||||||
|
|
||||||
val api = PetApi()
|
|
||||||
api.updatePetWithForm(petId, name, status)
|
api.updatePetWithForm(petId, name, status)
|
||||||
|
|
||||||
// verify updated Pet
|
// verify updated Pet
|
||||||
@ -94,7 +88,16 @@ class PetApiTest : ShouldSpec() {
|
|||||||
result.status shouldBe (Pet.Status.pending)
|
result.status shouldBe (Pet.Status.pending)
|
||||||
|
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
should("delete a pet") {
|
||||||
|
api.deletePet(petId, "apiKey")
|
||||||
|
|
||||||
|
// verify updated Pet
|
||||||
|
val exception = shouldThrow<ClientException> {
|
||||||
|
api.getPetById(petId)
|
||||||
|
}
|
||||||
|
exception.message?.shouldContain("Pet not found")
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
package org.openapitools.client.infrastructure
|
package org.openapitools.client.infrastructure
|
||||||
|
|
||||||
import com.squareup.moshi.FromJson
|
|
||||||
import com.squareup.moshi.KotlinJsonAdapterFactory
|
import com.squareup.moshi.KotlinJsonAdapterFactory
|
||||||
import com.squareup.moshi.Moshi
|
import com.squareup.moshi.Moshi
|
||||||
import com.squareup.moshi.ToJson
|
import com.squareup.moshi.Rfc3339DateJsonAdapter
|
||||||
import okhttp3.OkHttpClient
|
import okhttp3.OkHttpClient
|
||||||
import okhttp3.RequestBody
|
import okhttp3.RequestBody
|
||||||
import okhttp3.MediaType
|
import okhttp3.MediaType
|
||||||
@ -12,7 +11,7 @@ import okhttp3.HttpUrl
|
|||||||
import okhttp3.ResponseBody
|
import okhttp3.ResponseBody
|
||||||
import okhttp3.Request
|
import okhttp3.Request
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.UUID
|
import java.util.Date
|
||||||
|
|
||||||
open class ApiClient(val baseUrl: String) {
|
open class ApiClient(val baseUrl: String) {
|
||||||
companion object {
|
companion object {
|
||||||
@ -63,12 +62,11 @@ open class ApiClient(val baseUrl: String) {
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
return when(mediaType) {
|
return when(mediaType) {
|
||||||
JsonMediaType -> Moshi.Builder().add(object {
|
JsonMediaType -> Moshi.Builder()
|
||||||
@ToJson
|
.add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe())
|
||||||
fun toJson(uuid: UUID) = uuid.toString()
|
.add(LocalDateTimeAdapter())
|
||||||
@FromJson
|
.add(LocalDateAdapter())
|
||||||
fun fromJson(s: String) = UUID.fromString(s)
|
.add(UUIDAdapter())
|
||||||
})
|
|
||||||
.add(ByteArrayAdapter())
|
.add(ByteArrayAdapter())
|
||||||
.add(KotlinJsonAdapterFactory())
|
.add(KotlinJsonAdapterFactory())
|
||||||
.build().adapter(T::class.java).fromJson(bodyContent)
|
.build().adapter(T::class.java).fromJson(bodyContent)
|
||||||
|
@ -0,0 +1,19 @@
|
|||||||
|
package org.openapitools.client.infrastructure
|
||||||
|
|
||||||
|
import com.squareup.moshi.FromJson
|
||||||
|
import com.squareup.moshi.ToJson
|
||||||
|
import java.time.LocalDate
|
||||||
|
import java.time.format.DateTimeFormatter
|
||||||
|
|
||||||
|
class LocalDateAdapter {
|
||||||
|
@ToJson
|
||||||
|
fun toJson(value: LocalDate): String {
|
||||||
|
return DateTimeFormatter.ISO_LOCAL_DATE.format(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
@FromJson
|
||||||
|
fun fromJson(value: String): LocalDate {
|
||||||
|
return LocalDate.parse(value, DateTimeFormatter.ISO_LOCAL_DATE)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package org.openapitools.client.infrastructure
|
||||||
|
|
||||||
|
import com.squareup.moshi.FromJson
|
||||||
|
import com.squareup.moshi.ToJson
|
||||||
|
import java.time.LocalDateTime
|
||||||
|
import java.time.format.DateTimeFormatter
|
||||||
|
|
||||||
|
class LocalDateTimeAdapter {
|
||||||
|
@ToJson
|
||||||
|
fun toJson(value: LocalDateTime): String {
|
||||||
|
return DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
@FromJson
|
||||||
|
fun fromJson(value: String): LocalDateTime {
|
||||||
|
return LocalDateTime.parse(value, DateTimeFormatter.ISO_LOCAL_DATE_TIME)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -3,12 +3,16 @@ package org.openapitools.client.infrastructure
|
|||||||
import com.squareup.moshi.KotlinJsonAdapterFactory
|
import com.squareup.moshi.KotlinJsonAdapterFactory
|
||||||
import com.squareup.moshi.Moshi
|
import com.squareup.moshi.Moshi
|
||||||
import com.squareup.moshi.Rfc3339DateJsonAdapter
|
import com.squareup.moshi.Rfc3339DateJsonAdapter
|
||||||
import java.util.*
|
import java.util.Date
|
||||||
|
|
||||||
object Serializer {
|
object Serializer {
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
val moshi: Moshi = Moshi.Builder()
|
val moshi: Moshi = Moshi.Builder()
|
||||||
.add(KotlinJsonAdapterFactory())
|
|
||||||
.add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe())
|
.add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe())
|
||||||
|
.add(LocalDateTimeAdapter())
|
||||||
|
.add(LocalDateAdapter())
|
||||||
|
.add(UUIDAdapter())
|
||||||
|
.add(ByteArrayAdapter())
|
||||||
|
.add(KotlinJsonAdapterFactory())
|
||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,13 @@
|
|||||||
|
package org.openapitools.client.infrastructure
|
||||||
|
|
||||||
|
import com.squareup.moshi.FromJson
|
||||||
|
import com.squareup.moshi.ToJson
|
||||||
|
import java.util.UUID
|
||||||
|
|
||||||
|
class UUIDAdapter {
|
||||||
|
@ToJson
|
||||||
|
fun toJson(uuid: UUID) = uuid.toString()
|
||||||
|
|
||||||
|
@FromJson
|
||||||
|
fun fromJson(s: String) = UUID.fromString(s)
|
||||||
|
}
|
@ -0,0 +1,48 @@
|
|||||||
|
package org.openapitools.client
|
||||||
|
|
||||||
|
import io.kotlintest.shouldBe
|
||||||
|
import io.kotlintest.specs.ShouldSpec
|
||||||
|
import org.openapitools.client.apis.PetApi
|
||||||
|
import org.openapitools.client.apis.StoreApi
|
||||||
|
import org.openapitools.client.models.Order
|
||||||
|
import org.openapitools.client.models.Pet
|
||||||
|
import java.time.LocalDateTime.now
|
||||||
|
|
||||||
|
class StoreApiTest : ShouldSpec() {
|
||||||
|
init {
|
||||||
|
|
||||||
|
val petId:Long = 10006
|
||||||
|
val petApi = PetApi()
|
||||||
|
val storeApi = StoreApi()
|
||||||
|
|
||||||
|
val pet = Pet(
|
||||||
|
id = petId,
|
||||||
|
name = "kotlin client test",
|
||||||
|
photoUrls = arrayOf("http://test_kotlin_unit_test.com")
|
||||||
|
)
|
||||||
|
petApi.addPet(pet)
|
||||||
|
|
||||||
|
should("add an order") {
|
||||||
|
|
||||||
|
val order = Order(
|
||||||
|
id = 12,
|
||||||
|
petId = petId,
|
||||||
|
quantity = 2,
|
||||||
|
shipDate = now(),
|
||||||
|
complete = true
|
||||||
|
)
|
||||||
|
storeApi.placeOrder(order);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
should("get order by id") {
|
||||||
|
val result = storeApi.getOrderById(12)
|
||||||
|
|
||||||
|
// verify order
|
||||||
|
result.petId shouldBe (petId)
|
||||||
|
result.quantity shouldBe (2)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user