mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 13:17:32 +00:00
Handle ambiguous script actions by using action map order (#114825)
This commit is contained in:
parent
1f37774352
commit
bfe944f666
@ -1855,6 +1855,12 @@ def determine_script_action(action: dict[str, Any]) -> str:
|
|||||||
"""Determine action type."""
|
"""Determine action type."""
|
||||||
if not (actions := ACTIONS_SET.intersection(action)):
|
if not (actions := ACTIONS_SET.intersection(action)):
|
||||||
raise ValueError("Unable to determine action")
|
raise ValueError("Unable to determine action")
|
||||||
|
if len(actions) > 1:
|
||||||
|
# Ambiguous action, select the first one in the
|
||||||
|
# order of the ACTIONS_MAP
|
||||||
|
for action_key, _script_action in ACTIONS_MAP.items():
|
||||||
|
if action_key in actions:
|
||||||
|
return _script_action
|
||||||
return ACTIONS_MAP[actions.pop()]
|
return ACTIONS_MAP[actions.pop()]
|
||||||
|
|
||||||
|
|
||||||
|
@ -1672,3 +1672,25 @@ def test_color_hex() -> None:
|
|||||||
|
|
||||||
with pytest.raises(vol.Invalid, match=msg):
|
with pytest.raises(vol.Invalid, match=msg):
|
||||||
cv.color_hex(123456)
|
cv.color_hex(123456)
|
||||||
|
|
||||||
|
|
||||||
|
def test_determine_script_action_ambiguous():
|
||||||
|
"""Test determine script action with ambiguous actions."""
|
||||||
|
assert (
|
||||||
|
cv.determine_script_action(
|
||||||
|
{
|
||||||
|
"type": "is_power",
|
||||||
|
"condition": "device",
|
||||||
|
"device_id": "9c2bda81bc7997c981f811c32cafdb22",
|
||||||
|
"entity_id": "2ee287ec70dd0c6db187b539bee429b7",
|
||||||
|
"domain": "sensor",
|
||||||
|
"below": "15",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
== "condition"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_determine_script_action_non_ambiguous():
|
||||||
|
"""Test determine script action with a non ambiguous action."""
|
||||||
|
assert cv.determine_script_action({"delay": "00:00:05"}) == "delay"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user