package mcp.tools.helper; import io.modelcontextprotocol.spec.McpSchema; import org.junit.jupiter.api.Test; import java.util.Map; import java.util.List; import static org.junit.jupiter.api.Assertions.*; public class SchemaBuilderTest { @Test public void testBuildObject() { McpSchema.JsonSchema schema = new SchemaBuilder() .type("object") .addProperty("name", "string", "User name") .addProperty("age", "integer", "User age") .required("name") .additionalProperties(false) .build(); assertEquals("object", schema.type()); assertNotNull(schema.properties()); assertTrue(schema.properties().containsKey("name")); assertTrue(schema.properties().containsKey("age")); assertEquals(List.of("name"), schema.required()); assertEquals(false, schema.additionalProperties()); Map nameProp = (Map) schema.properties().get("name"); assertEquals("string", nameProp.get("type")); assertEquals("User name", nameProp.get("description")); } @Test public void testBuildMap() { Map map = new SchemaBuilder() .type("object") .addProperty("message", "string", "Echo message") .required("message") .buildMap(); assertEquals("object", map.get("type")); Map properties = (Map) map.get("properties"); assertNotNull(properties); assertTrue(properties.containsKey("message")); assertEquals(List.of("message"), map.get("required")); } @Test public void testEmptySchema() { McpSchema.JsonSchema schema = new SchemaBuilder().build(); assertEquals("object", schema.type()); assertNull(schema.properties()); assertNull(schema.required()); } @Test public void testReturns() { Map map = new SchemaBuilder() .returns("string", "The result") .buildMap(); assertEquals("object", map.get("type")); Map properties = (Map) map.get("properties"); assertNotNull(properties); assertTrue(properties.containsKey("result")); Map resultProp = (Map) properties.get("result"); assertEquals("string", resultProp.get("type")); assertEquals("The result", resultProp.get("description")); } }