mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 05:07:41 +00:00
Serialize Object Selector correctly if a field is required (#148577)
This commit is contained in:
parent
19b3b6cb28
commit
e6702d2392
@ -779,13 +779,19 @@ def selector_serializer(schema: Any) -> Any: # noqa: C901
|
|||||||
if isinstance(schema, selector.ObjectSelector):
|
if isinstance(schema, selector.ObjectSelector):
|
||||||
result = {"type": "object"}
|
result = {"type": "object"}
|
||||||
if fields := schema.config.get("fields"):
|
if fields := schema.config.get("fields"):
|
||||||
result["properties"] = {
|
properties = {}
|
||||||
field: convert(
|
required = []
|
||||||
|
for field, field_schema in fields.items():
|
||||||
|
properties[field] = convert(
|
||||||
selector.selector(field_schema["selector"]),
|
selector.selector(field_schema["selector"]),
|
||||||
custom_serializer=selector_serializer,
|
custom_serializer=selector_serializer,
|
||||||
)
|
)
|
||||||
for field, field_schema in fields.items()
|
if field_schema.get("required"):
|
||||||
}
|
required.append(field)
|
||||||
|
result["properties"] = properties
|
||||||
|
|
||||||
|
if required:
|
||||||
|
result["required"] = required
|
||||||
else:
|
else:
|
||||||
result["additionalProperties"] = True
|
result["additionalProperties"] = True
|
||||||
if schema.config.get("multiple"):
|
if schema.config.get("multiple"):
|
||||||
|
@ -1161,6 +1161,7 @@ async def test_selector_serializer(
|
|||||||
"name": {"type": "string"},
|
"name": {"type": "string"},
|
||||||
"percentage": {"type": "number", "minimum": 30, "maximum": 100},
|
"percentage": {"type": "number", "minimum": 30, "maximum": 100},
|
||||||
},
|
},
|
||||||
|
"required": ["name"],
|
||||||
}
|
}
|
||||||
assert selector_serializer(
|
assert selector_serializer(
|
||||||
selector.ObjectSelector(
|
selector.ObjectSelector(
|
||||||
@ -1190,6 +1191,7 @@ async def test_selector_serializer(
|
|||||||
"maximum": 100,
|
"maximum": 100,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"required": ["name"],
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
assert selector_serializer(
|
assert selector_serializer(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user