Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ object SchemaGenerator {
.map(_.schemas.toSeq.flatMap {
case (name, e: OpenapiSchemaEnum) =>
Some(name -> parentImpl(name, e)({ (_: (Boolean, Seq[String])) =>
s"implicit lazy val ${schemaName(name)}: sttp.tapir.Schema[$name] = sttp.tapir.Schema.derived"
s"implicit lazy val ${schemaName(name)}: sttp.tapir.Schema[$name] = sttp.tapir.Schema.derivedEnumeration.defaultStringBased"
}))
case (name, obj: OpenapiSchemaObject) => Some(name -> parentImpl(name, obj)(schemaForObject(name, _, obj)))
case (name, schema: OpenapiSchemaMap) => Some(name -> parentImpl(name, schema)(schemaForMapOrArray(name, _, schema.items)))
Expand Down Expand Up @@ -309,7 +309,7 @@ object SchemaGenerator {
subs.fold("")("\n" + _)
}
private def schemaForEnum(name: String): String =
s"""implicit lazy val ${schemaName(name)}: sttp.tapir.Schema[$name] = sttp.tapir.Schema.derived"""
s"""implicit lazy val ${schemaName(name)}: sttp.tapir.Schema[$name] = sttp.tapir.Schema.derivedEnumeration.defaultStringBased"""

private def genADTSchema(
name: String,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,11 +75,13 @@ class RootGeneratorSpec extends CompileCheckTestBase {
(models + "\n" + serdes + "\n" + schemas + "\n" + endpoints).shouldCompile()
}

it should s"compile endpoints with enum query params using ${jsonSerdeLib} serdes" in {
// scala2 can't handle the 'derivedEnumeration.defaultStringBased' macro in runtime mirror compilation
if (isScala3) it should s"compile endpoints with enum query params using ${jsonSerdeLib} serdes" in {
gen(TestHelpers.enumQueryParamDocs, useHeadTagForObjectNames = false, jsonSerdeLib = jsonSerdeLib).shouldCompile()
}

VersionCheck.runTest(jsonSerdeLib)(it should s"compile endpoints with default params using ${jsonSerdeLib} serdes" in {
// scala2 can't handle the 'derivedEnumeration.defaultStringBased' macro in runtime mirror compilation
if (isScala3) VersionCheck.runTest(jsonSerdeLib)(it should s"compile endpoints with default params using ${jsonSerdeLib} serdes" in {
val genWithParams = gen(TestHelpers.withDefaultsDocs, useHeadTagForObjectNames = false, jsonSerdeLib = jsonSerdeLib)

val expectedDefaultDeclarations = Seq(
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ object TapirGeneratedEndpointsSchemas {
implicit lazy val byteStringSchema: sttp.tapir.Schema[ByteString] = sttp.tapir.Schema.schemaForByteArray.map(ba => Some(toByteString(ba)))(bs => bs)
implicit lazy val abrdvarkTapirSchema: sttp.tapir.Schema[Abrdvark] = sttp.tapir.Schema.derived
implicit lazy val acrdvarkTapirSchema: sttp.tapir.Schema[Acrdvark] = sttp.tapir.Schema.derived
implicit lazy val anEnumTapirSchema: sttp.tapir.Schema[AnEnum] = sttp.tapir.Schema.derived
implicit lazy val anEnumTapirSchema: sttp.tapir.Schema[AnEnum] = sttp.tapir.Schema.derivedEnumeration.defaultStringBased
implicit lazy val hasASetTapirSchema: sttp.tapir.Schema[HasASet] = sttp.tapir.Schema.derived

implicit lazy val notNullableThingyTapirSchema: sttp.tapir.Schema[NotNullableThingy] = sttp.tapir.Schema.derived
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ object TapirGeneratedEndpointsSchemas {
implicit lazy val byteStringSchema: sttp.tapir.Schema[ByteString] = sttp.tapir.Schema.schemaForByteArray.map(ba => Some(toByteString(ba)))(bs => bs)
implicit lazy val abrdvarkTapirSchema: sttp.tapir.Schema[Abrdvark] = sttp.tapir.Schema.derived
implicit lazy val acrdvarkTapirSchema: sttp.tapir.Schema[Acrdvark] = sttp.tapir.Schema.derived
implicit lazy val anEnumTapirSchema: sttp.tapir.Schema[AnEnum] = sttp.tapir.Schema.derived
implicit lazy val anEnumTapirSchema: sttp.tapir.Schema[AnEnum] = sttp.tapir.Schema.derivedEnumeration.defaultStringBased
implicit lazy val hasBarTapirSchema: sttp.tapir.Schema[HasBar] = sttp.tapir.Schema.derived
implicit lazy val hasBazTapirSchema: sttp.tapir.Schema[HasBaz] = sttp.tapir.Schema.derived
implicit lazy val hasFooTapirSchema: sttp.tapir.Schema[HasFoo] = sttp.tapir.Schema.derived
Expand All @@ -17,9 +17,9 @@ object TapirGeneratedEndpointsSchemas {
implicit lazy val notNullableThingyTapirSchema: sttp.tapir.Schema[NotNullableThingy] = sttp.tapir.Schema.derived
implicit lazy val nullableThingyTapirSchema: sttp.tapir.Schema[NullableThingy] = sttp.tapir.Schema.derived
implicit lazy val nullableThingy2TapirSchema: sttp.tapir.Schema[NullableThingy2] = sttp.tapir.Schema.derived
implicit lazy val objectWithInlineEnumInlineEnumTapirSchema: sttp.tapir.Schema[ObjectWithInlineEnumInlineEnum] = sttp.tapir.Schema.derived
implicit lazy val objectWithInlineEnumInlineEnumTapirSchema: sttp.tapir.Schema[ObjectWithInlineEnumInlineEnum] = sttp.tapir.Schema.derivedEnumeration.defaultStringBased
implicit lazy val objectWithInlineEnumTapirSchema: sttp.tapir.Schema[ObjectWithInlineEnum] = sttp.tapir.Schema.derived
implicit lazy val objectWithInlineEnum2InlineEnumTapirSchema: sttp.tapir.Schema[ObjectWithInlineEnum2InlineEnum] = sttp.tapir.Schema.derived
implicit lazy val objectWithInlineEnum2InlineEnumTapirSchema: sttp.tapir.Schema[ObjectWithInlineEnum2InlineEnum] = sttp.tapir.Schema.derivedEnumeration.defaultStringBased
implicit lazy val objectWithInlineEnum2TapirSchema: sttp.tapir.Schema[ObjectWithInlineEnum2] = sttp.tapir.Schema.derived
implicit lazy val simpleErrorTapirSchema: sttp.tapir.Schema[SimpleError] = sttp.tapir.Schema.derived
implicit lazy val subtypeWithD1TapirSchema: sttp.tapir.Schema[SubtypeWithD1] = sttp.tapir.Schema.derived
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,16 @@ object Main extends App {
import java.nio.file.{Paths, Files}
import java.nio.charset.StandardCharsets

Files.write(Paths.get("target/swagger.yaml"), docs.toYaml.getBytes(StandardCharsets.UTF_8))
private val outputYaml: String = docs.toYaml
assert(
outputYaml.contains(""" AnEnum:
| title: AnEnum
| type: string
| enum:
| - Bar
| - Baz
| - Foo""".stripMargin),
"enums look wrong :'("
)
Files.write(Paths.get("target/swagger.yaml"), outputYaml.getBytes(StandardCharsets.UTF_8))
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package sttp.tapir.generated


object TapirGeneratedEndpointsSchemas {
import sttp.tapir.generated.TapirGeneratedEndpoints._
import sttp.tapir.generic.auto._
implicit lazy val byteStringSchema: sttp.tapir.Schema[ByteString] = sttp.tapir.Schema.schemaForByteArray.map(ba => Some(toByteString(ba)))(bs => bs)
implicit lazy val anEnumTapirSchema: sttp.tapir.Schema[AnEnum] = sttp.tapir.Schema.derived
implicit lazy val anEnumTapirSchema: sttp.tapir.Schema[AnEnum] = sttp.tapir.Schema.derivedEnumeration.defaultStringBased
implicit lazy val categoryTapirSchema: sttp.tapir.Schema[Category] = sttp.tapir.Schema.derived
implicit def nodeTapirSchema: sttp.tapir.Schema[Node] = sttp.tapir.Schema.derived
implicit lazy val petStatusTapirSchema: sttp.tapir.Schema[PetStatus] = sttp.tapir.Schema.derived
implicit lazy val petStatusTapirSchema: sttp.tapir.Schema[PetStatus] = sttp.tapir.Schema.derivedEnumeration.defaultStringBased
implicit lazy val subtypeWithD1TapirSchema: sttp.tapir.Schema[SubtypeWithD1] = sttp.tapir.Schema.derived
implicit lazy val subtypeWithD2TapirSchema: sttp.tapir.Schema[SubtypeWithD2] = sttp.tapir.Schema.derived
implicit lazy val subtypeWithoutD1TapirSchema: sttp.tapir.Schema[SubtypeWithoutD1] = sttp.tapir.Schema.derived
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,16 @@ object Main extends App {
import java.nio.file.{Paths, Files}
import java.nio.charset.StandardCharsets

Files.write(Paths.get("target/swagger.yaml"), docs.toYaml.getBytes(StandardCharsets.UTF_8))
private val outputYaml: String = docs.toYaml
Files.write(Paths.get("target/swagger.yaml"), outputYaml.getBytes(StandardCharsets.UTF_8))
assert(
outputYaml.contains(""" AnEnum:
| title: AnEnum
| type: string
| enum:
| - Bar
| - Baz
| - Foo""".stripMargin),
"enums look wrong :'("
)
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
package sttp.tapir.generated


object TapirGeneratedEndpointsSchemas {
import sttp.tapir.generated.TapirGeneratedEndpoints._
import sttp.tapir.generic.auto._
implicit lazy val byteStringSchema: sttp.tapir.Schema[ByteString] = sttp.tapir.Schema.schemaForByteArray.map(ba => Some(toByteString(ba)))(bs => bs)
implicit lazy val apiResponseTapirSchema: sttp.tapir.Schema[ApiResponse] = sttp.tapir.Schema.derived
implicit lazy val categoryTapirSchema: sttp.tapir.Schema[Category] = sttp.tapir.Schema.derived
implicit lazy val orderStatusTapirSchema: sttp.tapir.Schema[OrderStatus] = sttp.tapir.Schema.derived
implicit lazy val orderStatusTapirSchema: sttp.tapir.Schema[OrderStatus] = sttp.tapir.Schema.derivedEnumeration.defaultStringBased
implicit lazy val orderTapirSchema: sttp.tapir.Schema[Order] = sttp.tapir.Schema.derived
implicit lazy val tagTapirSchema: sttp.tapir.Schema[Tag] = sttp.tapir.Schema.derived
implicit lazy val userTapirSchema: sttp.tapir.Schema[User] = sttp.tapir.Schema.derived
implicit lazy val petStatusTapirSchema: sttp.tapir.Schema[PetStatus] = sttp.tapir.Schema.derived
implicit lazy val petStatusTapirSchema: sttp.tapir.Schema[PetStatus] = sttp.tapir.Schema.derivedEnumeration.defaultStringBased
implicit lazy val petTapirSchema: sttp.tapir.Schema[Pet] = sttp.tapir.Schema.derived
}
Loading