diff --git a/CHANGELOG.md b/CHANGELOG.md index dda00e5c1..430262d85 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ ### Changed +### Fixed + +- Fixed missing `BooleanEnrichment` mapping + ### Remove --- diff --git a/core/src/test/kotlin/io/bkbn/kompendium/core/util/Enrichment.kt b/core/src/test/kotlin/io/bkbn/kompendium/core/util/Enrichment.kt index a1fcd7cda..3eeebc4d6 100644 --- a/core/src/test/kotlin/io/bkbn/kompendium/core/util/Enrichment.kt +++ b/core/src/test/kotlin/io/bkbn/kompendium/core/util/Enrichment.kt @@ -10,6 +10,7 @@ import io.bkbn.kompendium.core.fixtures.TestSimpleRequest import io.bkbn.kompendium.core.metadata.GetInfo import io.bkbn.kompendium.core.metadata.PostInfo import io.bkbn.kompendium.core.plugin.NotarizedRoute +import io.bkbn.kompendium.enrichment.BooleanEnrichment import io.bkbn.kompendium.enrichment.CollectionEnrichment import io.bkbn.kompendium.enrichment.MapEnrichment import io.bkbn.kompendium.enrichment.NumberEnrichment @@ -63,6 +64,9 @@ fun Route.enrichedSimpleRequest() { deprecated = true } } + TestSimpleRequest::c { + BooleanEnrichment("blah-blah-blah") { } + } } ) description("A test request") diff --git a/core/src/test/resources/T0002__notarized_post.json b/core/src/test/resources/T0002__notarized_post.json index b512f6dbe..6ee75ee7c 100644 --- a/core/src/test/resources/T0002__notarized_post.json +++ b/core/src/test/resources/T0002__notarized_post.json @@ -109,11 +109,15 @@ "b": { "type": "number", "format": "int32" + }, + "c": { + "type": "boolean" } }, "required": [ "a", - "b" + "b", + "c" ] } }, diff --git a/core/src/test/resources/T0003__notarized_put.json b/core/src/test/resources/T0003__notarized_put.json index 529e3fcdc..8230dd38c 100644 --- a/core/src/test/resources/T0003__notarized_put.json +++ b/core/src/test/resources/T0003__notarized_put.json @@ -109,11 +109,15 @@ "b": { "type": "number", "format": "int32" + }, + "c": { + "type": "boolean" } }, "required": [ "a", - "b" + "b", + "c" ] } }, diff --git a/core/src/test/resources/T0005__notarized_patch.json b/core/src/test/resources/T0005__notarized_patch.json index 9b12c4025..b7a6ac64c 100644 --- a/core/src/test/resources/T0005__notarized_patch.json +++ b/core/src/test/resources/T0005__notarized_patch.json @@ -109,11 +109,15 @@ "b": { "type": "number", "format": "int32" + }, + "c": { + "type": "boolean" } }, "required": [ "a", - "b" + "b", + "c" ] } }, diff --git a/core/src/test/resources/T0053__same_path_different_methods_and_auth.json b/core/src/test/resources/T0053__same_path_different_methods_and_auth.json index 03607a7f7..d373fdc20 100644 --- a/core/src/test/resources/T0053__same_path_different_methods_and_auth.json +++ b/core/src/test/resources/T0053__same_path_different_methods_and_auth.json @@ -144,11 +144,15 @@ "b": { "type": "number", "format": "int32" + }, + "c": { + "type": "boolean" } }, "required": [ "a", - "b" + "b", + "c" ] } }, diff --git a/core/src/test/resources/T0055__enriched_simple_request.json b/core/src/test/resources/T0055__enriched_simple_request.json index 0fcc75b2a..e23be0192 100644 --- a/core/src/test/resources/T0055__enriched_simple_request.json +++ b/core/src/test/resources/T0055__enriched_simple_request.json @@ -111,11 +111,15 @@ "type": "number", "format": "int32", "deprecated": true + }, + "c": { + "type": "boolean" } }, "required": [ "a", - "b" + "b", + "c" ] } }, diff --git a/core/src/test/resources/T0067__enriched_generic_object.json b/core/src/test/resources/T0067__enriched_generic_object.json index afec89260..5502f721f 100644 --- a/core/src/test/resources/T0067__enriched_generic_object.json +++ b/core/src/test/resources/T0067__enriched_generic_object.json @@ -76,11 +76,15 @@ "type": "number", "format": "int32", "deprecated": true + }, + "c": { + "type": "boolean" } }, "required": [ "a", - "b" + "b", + "c" ] } }, diff --git a/core/src/test/resources/T0077__enriched_top_level_list.json b/core/src/test/resources/T0077__enriched_top_level_list.json index a003d112c..04f2e16a5 100644 --- a/core/src/test/resources/T0077__enriched_top_level_list.json +++ b/core/src/test/resources/T0077__enriched_top_level_list.json @@ -111,11 +111,15 @@ "type": "number", "format": "int32", "deprecated": true + }, + "c": { + "type": "boolean" } }, "required": [ "a", - "b" + "b", + "c" ] }, "TestSimpleRequest-blah-blah": { @@ -129,11 +133,15 @@ "type": "number", "format": "int32", "deprecated": true + }, + "c": { + "type": "boolean" } }, "required": [ "a", - "b" + "b", + "c" ] }, "List-TestSimpleRequest-blah-blah": { diff --git a/core/src/test/resources/T0078__enriched_top_level_map.json b/core/src/test/resources/T0078__enriched_top_level_map.json index bdf7e558f..54a5282d0 100644 --- a/core/src/test/resources/T0078__enriched_top_level_map.json +++ b/core/src/test/resources/T0078__enriched_top_level_map.json @@ -64,11 +64,15 @@ "type": "number", "format": "int32", "deprecated": true + }, + "c": { + "type": "boolean" } }, "required": [ "a", - "b" + "b", + "c" ] }, "TestSimpleRequest-blah": { @@ -82,11 +86,15 @@ "type": "number", "format": "int32", "deprecated": true + }, + "c": { + "type": "boolean" } }, "required": [ "a", - "b" + "b", + "c" ] }, "Map-String-TestSimpleRequest-blah": { diff --git a/core/src/testFixtures/kotlin/io/bkbn/kompendium/core/fixtures/TestModels.kt b/core/src/testFixtures/kotlin/io/bkbn/kompendium/core/fixtures/TestModels.kt index 180e49e4f..ca9df4d66 100644 --- a/core/src/testFixtures/kotlin/io/bkbn/kompendium/core/fixtures/TestModels.kt +++ b/core/src/testFixtures/kotlin/io/bkbn/kompendium/core/fixtures/TestModels.kt @@ -23,7 +23,8 @@ data class TestRequest( @Serializable data class TestSimpleRequest( val a: String, - val b: Int + val b: Int, + val c: Boolean ) @Serializable diff --git a/json-schema/src/main/kotlin/io/bkbn/kompendium/json/schema/handler/EnrichmentHandler.kt b/json-schema/src/main/kotlin/io/bkbn/kompendium/json/schema/handler/EnrichmentHandler.kt index c60ff7e40..05493f4d4 100644 --- a/json-schema/src/main/kotlin/io/bkbn/kompendium/json/schema/handler/EnrichmentHandler.kt +++ b/json-schema/src/main/kotlin/io/bkbn/kompendium/json/schema/handler/EnrichmentHandler.kt @@ -1,5 +1,6 @@ package io.bkbn.kompendium.json.schema.handler +import io.bkbn.kompendium.enrichment.BooleanEnrichment import io.bkbn.kompendium.enrichment.CollectionEnrichment import io.bkbn.kompendium.enrichment.Enrichment import io.bkbn.kompendium.enrichment.MapEnrichment @@ -15,6 +16,7 @@ import io.bkbn.kompendium.json.schema.definition.TypeDefinition object EnrichmentHandler { fun Enrichment.applyToSchema(schema: JsonSchema): JsonSchema = when (this) { + is BooleanEnrichment -> applyToSchema(schema) is NumberEnrichment -> applyToSchema(schema) is StringEnrichment -> applyToSchema(schema) is CollectionEnrichment<*> -> applyToSchema(schema) @@ -39,6 +41,11 @@ object EnrichmentHandler { else -> error("Incorrect enrichment type for enrichment id: ${this.id}") } + private fun BooleanEnrichment.applyToSchema(schema: JsonSchema): JsonSchema = when (schema) { + is TypeDefinition -> schema.copyBooleanEnrichment(this) + else -> error("Incorrect enrichment type for enrichment id: ${this.id}") + } + private fun NumberEnrichment.applyToSchema(schema: JsonSchema): JsonSchema = when (schema) { is TypeDefinition -> schema.copyNumberEnrichment(this) else -> error("Incorrect enrichment type for enrichment id: ${this.id}") @@ -49,6 +56,13 @@ object EnrichmentHandler { else -> error("Incorrect enrichment type for enrichment id: ${this.id}") } + private fun TypeDefinition.copyBooleanEnrichment( + enrichment: BooleanEnrichment + ): TypeDefinition = copy( + deprecated = enrichment.deprecated, + description = enrichment.description, + ) + private fun TypeDefinition.copyNumberEnrichment( enrichment: NumberEnrichment ): TypeDefinition = copy( diff --git a/json-schema/src/test/resources/T0004__simple_object.json b/json-schema/src/test/resources/T0004__simple_object.json index 873c85a2e..a8f874023 100644 --- a/json-schema/src/test/resources/T0004__simple_object.json +++ b/json-schema/src/test/resources/T0004__simple_object.json @@ -7,10 +7,14 @@ "b": { "type": "number", "format": "int32" + }, + "c": { + "type": "boolean" } }, "required": [ "a", - "b" + "b", + "c" ] } diff --git a/json-schema/src/test/resources/T0006__nullable_object.json b/json-schema/src/test/resources/T0006__nullable_object.json index 873c85a2e..a8f874023 100644 --- a/json-schema/src/test/resources/T0006__nullable_object.json +++ b/json-schema/src/test/resources/T0006__nullable_object.json @@ -7,10 +7,14 @@ "b": { "type": "number", "format": "int32" + }, + "c": { + "type": "boolean" } }, "required": [ "a", - "b" + "b", + "c" ] } diff --git a/json-schema/src/test/resources/T0022__enriched_simple_object.json b/json-schema/src/test/resources/T0022__enriched_simple_object.json index 062d1e4c4..355873f02 100644 --- a/json-schema/src/test/resources/T0022__enriched_simple_object.json +++ b/json-schema/src/test/resources/T0022__enriched_simple_object.json @@ -9,10 +9,14 @@ "type": "number", "format": "int32", "deprecated": true + }, + "c": { + "type": "boolean" } }, "required": [ "a", - "b" + "b", + "c" ] }