mirror of
https://github.com/home-assistant/core.git
synced 2025-07-21 04:07:08 +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):
|
||||
result = {"type": "object"}
|
||||
if fields := schema.config.get("fields"):
|
||||
result["properties"] = {
|
||||
field: convert(
|
||||
properties = {}
|
||||
required = []
|
||||
for field, field_schema in fields.items():
|
||||
properties[field] = convert(
|
||||
selector.selector(field_schema["selector"]),
|
||||
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:
|
||||
result["additionalProperties"] = True
|
||||
if schema.config.get("multiple"):
|
||||
|
@ -1161,6 +1161,7 @@ async def test_selector_serializer(
|
||||
"name": {"type": "string"},
|
||||
"percentage": {"type": "number", "minimum": 30, "maximum": 100},
|
||||
},
|
||||
"required": ["name"],
|
||||
}
|
||||
assert selector_serializer(
|
||||
selector.ObjectSelector(
|
||||
@ -1190,6 +1191,7 @@ async def test_selector_serializer(
|
||||
"maximum": 100,
|
||||
},
|
||||
},
|
||||
"required": ["name"],
|
||||
},
|
||||
}
|
||||
assert selector_serializer(
|
||||
|
Loading…
x
Reference in New Issue
Block a user