mirror of
https://github.com/home-assistant/core.git
synced 2025-07-22 20:57:21 +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."""
|
||||
if not (actions := ACTIONS_SET.intersection(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()]
|
||||
|
||||
|
||||
|
@ -1672,3 +1672,25 @@ def test_color_hex() -> None:
|
||||
|
||||
with pytest.raises(vol.Invalid, match=msg):
|
||||
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