in prompt/prompt-structure/src/commonTest/kotlin/ai/koog/prompt/structure/json/generator/JsonSchemaGeneratorTest.kt [538:631]
fun testSimpleSchemaNestedDescriptions() {
val descriptions = mapOf(
"NestedTestClass.name" to "The name (override)",
"NestedTestClass.nestedList" to "List of nested properties",
"NestedTestClass.nestedMap" to "Map of nested properties",
"NestedProperty.bar" to "Nested bar property",
)
val result = basicGenerator.generate(json, "NestedTestClass", serializer<NestedTestClass>(), descriptions)
val schema = json.encodeToString(result.schema)
val expectedDotSchema = """
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name (override)"
},
"nested": {
"type": "object",
"properties": {
"foo": {
"type": "string",
"description": "Nested foo property"
},
"bar": {
"type": "integer",
"description": "Nested bar property"
}
},
"required": [
"foo",
"bar"
],
"additionalProperties": false,
"description": "Nested property class"
},
"nestedList": {
"type": "array",
"items": {
"type": "object",
"properties": {
"foo": {
"type": "string",
"description": "Nested foo property"
},
"bar": {
"type": "integer",
"description": "Nested bar property"
}
},
"required": [
"foo",
"bar"
],
"additionalProperties": false
},
"description": "List of nested properties"
},
"nestedMap": {
"type": "object",
"additionalProperties": {
"type": "object",
"properties": {
"foo": {
"type": "string",
"description": "Nested foo property"
},
"bar": {
"type": "integer",
"description": "Nested bar property"
}
},
"required": [
"foo",
"bar"
],
"additionalProperties": false
},
"description": "Map of nested properties"
}
},
"required": [
"name",
"nested"
],
"additionalProperties": false
}
""".trimIndent()
assertEquals(expectedDotSchema, schema)
}