Add accept keyword to Media selector (#145527)

* Add accept keyword to Media selector

* Adjust test
This commit is contained in:
Paulus Schoutsen 2025-06-24 08:36:48 -04:00 committed by GitHub
parent 97f3bb3da5
commit 7cccdf2205
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 25 additions and 4 deletions

View File

@ -1020,11 +1020,15 @@ class MediaSelector(Selector[MediaSelectorConfig]):
selector_type = "media"
CONFIG_SCHEMA = BASE_SELECTOR_CONFIG_SCHEMA
CONFIG_SCHEMA = BASE_SELECTOR_CONFIG_SCHEMA.extend(
{
vol.Optional("accept"): [str],
}
)
DATA_SCHEMA = vol.Schema(
{
# Although marked as optional in frontend, this field is required
vol.Required("entity_id"): cv.entity_id_or_uuid,
# If accept is set, the entity_id field will not be present
vol.Optional("entity_id"): cv.entity_id_or_uuid,
# Although marked as optional in frontend, this field is required
vol.Required("media_content_id"): str,
# Although marked as optional in frontend, this field is required

View File

@ -1125,7 +1125,7 @@ async def test_selector_serializer(
"media_content_type": {"type": "string"},
"metadata": {"type": "object", "additionalProperties": True},
},
"required": ["entity_id", "media_content_id", "media_content_type"],
"required": ["media_content_id", "media_content_type"],
}
assert selector_serializer(selector.NumberSelector({"mode": "box"})) == {
"type": "number"

View File

@ -817,6 +817,23 @@ def test_theme_selector_schema(schema, valid_selections, invalid_selections) ->
),
(None, "abc", {}),
),
(
{
"accept": ["image/*"],
},
(
{
"media_content_id": "abc",
"media_content_type": "def",
},
{
"media_content_id": "abc",
"media_content_type": "def",
"metadata": {},
},
),
(None, "abc", {}),
),
],
)
def test_media_selector_schema(schema, valid_selections, invalid_selections) -> None: