Skip to content

Commit

Permalink
Handle ambiguous script actions by using action map order (home-assis…
Browse files Browse the repository at this point in the history
  • Loading branch information
bdraco authored Apr 5, 2024
1 parent 1f37774 commit bfe944f
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 0 deletions.
6 changes: 6 additions & 0 deletions homeassistant/helpers/config_validation.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()]


Expand Down
22 changes: 22 additions & 0 deletions tests/helpers/test_config_validation.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"

0 comments on commit bfe944f

Please sign in to comment.