from auto_reverse.doc.schema import SchemaAccumulator def test_single_object_schema(): acc = SchemaAccumulator() acc.add({"id": 1, "name": "Ada"}) schema = acc.schema() assert schema["type"] == "object" assert set(schema["properties"]) == {"id", "name"} def test_merge_widens_optional_fields(): acc = SchemaAccumulator() acc.add({"id": 1, "name": "Ada"}) acc.add({"id": 2}) # name missing -> becomes optional schema = acc.schema() assert "id" in schema.get("required", []) assert "name" not in schema.get("required", []) def test_array_schema(): acc = SchemaAccumulator() acc.add([{"id": 1}, {"id": 2}]) schema = acc.schema() assert schema["type"] == "array" assert schema["items"]["type"] == "object" def test_empty_accumulator_returns_none(): assert SchemaAccumulator().schema() is None