mirror of
https://github.com/home-assistant/core.git
synced 2026-02-15 07:36:16 +00:00
Add app selector as replacement for addon selector (#161684)
This commit is contained in:
@@ -243,18 +243,18 @@ class ActionSelector(Selector[ActionSelectorConfig]):
|
||||
return data
|
||||
|
||||
|
||||
class AddonSelectorConfig(BaseSelectorConfig, total=False):
|
||||
"""Class to represent an addon selector config."""
|
||||
class AppSelectorConfig(BaseSelectorConfig, total=False):
|
||||
"""Class to represent an app selector config."""
|
||||
|
||||
name: str
|
||||
slug: str
|
||||
|
||||
|
||||
@SELECTORS.register("addon")
|
||||
class AddonSelector(Selector[AddonSelectorConfig]):
|
||||
"""Selector of a add-on."""
|
||||
@SELECTORS.register("app")
|
||||
class AppSelector(Selector[AppSelectorConfig]):
|
||||
"""Selector of an app."""
|
||||
|
||||
selector_type = "addon"
|
||||
selector_type = "app"
|
||||
|
||||
CONFIG_SCHEMA = make_selector_config_schema(
|
||||
{
|
||||
@@ -263,6 +263,28 @@ class AddonSelector(Selector[AddonSelectorConfig]):
|
||||
}
|
||||
)
|
||||
|
||||
def __init__(self, config: AppSelectorConfig | None = None) -> None:
|
||||
"""Instantiate a selector."""
|
||||
super().__init__(config)
|
||||
|
||||
def __call__(self, data: Any) -> str:
|
||||
"""Validate the passed selection."""
|
||||
app: str = vol.Schema(str)(data)
|
||||
return app
|
||||
|
||||
|
||||
# AddonSelectorConfig as an alias of AppSelectorConfig
|
||||
AddonSelectorConfig = AppSelectorConfig
|
||||
|
||||
|
||||
@SELECTORS.register("addon")
|
||||
class AddonSelector(Selector[AddonSelectorConfig]):
|
||||
"""Selector of an add-on, kept for backward compatibility after add-ons -> apps rename."""
|
||||
|
||||
selector_type = "addon"
|
||||
|
||||
CONFIG_SCHEMA = AppSelector.CONFIG_SCHEMA
|
||||
|
||||
def __init__(self, config: AddonSelectorConfig | None = None) -> None:
|
||||
"""Instantiate a selector."""
|
||||
super().__init__(config)
|
||||
|
||||
@@ -487,6 +487,15 @@ def test_addon_selector_schema(schema, valid_selections, invalid_selections) ->
|
||||
_test_selector("addon", schema, valid_selections, invalid_selections)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("schema", "valid_selections", "invalid_selections"),
|
||||
[({}, ("abc123",), (None,))],
|
||||
)
|
||||
def test_app_selector_schema(schema, valid_selections, invalid_selections) -> None:
|
||||
"""Test app selector."""
|
||||
_test_selector("app", schema, valid_selections, invalid_selections)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("schema", "valid_selections", "invalid_selections"),
|
||||
[({}, ("abc123", "/backup"), (None, "abc@123", "abc 123", ""))],
|
||||
|
||||
Reference in New Issue
Block a user